Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Вывод формы в виде таблицы с доп. полями [RSS Feed]

#1 Июнь 2, 2011 11:59:22

nuklea
От:
Зарегистрирован: 2009-12-05
Сообщения: 51
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод формы в виде таблицы с доп. полями

Имеется:

class Delivery(models.Model):
"""Тип доставки"""
title = models.CharField(u'Наименование', max_length=255)
time = models.CharField(u'Сроки доставки', max_length=255)
price = models.DecimalField(u'Стоимость', max_digits=20, decimal_places=2)
hidden = models.BooleanField(u'Скрыт', default=False)

def __unicode__(self):
return u'%s' % self.title

class Order(models.Model):
"""Модель заказа"""
delivery = models.ForeignKey(Delivery)

class DeliverySettings(forms.ModelForm):
"""Форма выбора типа доставки"""
class Meta:
model = Order
fields = ('delivery',)
widgets = {'delivery': forms.RadioSelect}
Нужно нарисовать форму выбора типа доставки как таблицу, чтобы получилось вот так:



Офлайн

#2 Июнь 3, 2011 12:25:42

appetito
От:
Зарегистрирован: 2010-09-28
Сообщения: 147
Репутация: +  2  -
Профиль   Отправить e-mail  

Вывод формы в виде таблицы с доп. полями

напишите свой виджет вместо RadioSelect



Офлайн

#3 Июнь 3, 2011 12:38:40

nuklea
От:
Зарегистрирован: 2009-12-05
Сообщения: 51
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод формы в виде таблицы с доп. полями

appetito
напишите свой виджет вместо RadioSelect
В виджет можно передать лишь пару: значение и лэйбл. А у меня тут значение, лейбл, время и цена. Написал вот такие костыли во вьюхе:

def delivery(req, order_id):
"""Выбор способа доставки"""
order = get_object_or_404(Order, pk=order_id)
posters = Poster.objects.filter(order=order)
form = DeliverySettings(instance=order)

if req.method == 'POST':
form = DeliverySettings(instance=order, data=req.POST)

if form.is_valid():
form.save()

result = []
value = force_unicode(order.delivery_id)

for type in form.fields['delivery'].queryset:
choice = [type.id, type.title]
widget = RadioInput(u'delivery', value, {'id': 'delivery'}, choice, type.id)
result.append({'widget': widget, 'time': type.time, 'price': type.price})



Офлайн

  • Начало
  • » Django
  • » Вывод формы в виде таблицы с доп. полями[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version