Форум сайта python.su
Имеется:
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}
Офлайн
напишите свой виджет вместо RadioSelect
Офлайн
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})
Офлайн