【发布时间】:2016-09-30 07:38:28
【问题描述】:
class MySelect(forms.Select):
def __init__(self, *args, **kwargs):
self.variations = kwargs.pop('variations')
super(MySelect, self).__init__(*args, **kwargs)
def render_option(self, selected_choices, option_value, option_label):
return '<option whatever> {} </option>'.format(self.variations[0])
class CartItemForm(forms.ModelForm):
class Meta:
model = CartItem
fields = (
'variation',
'width',
'height',
'quantity',
)
def __init__(self, *args, **kwargs):
product = kwargs.pop('product')
try:
cart = kwargs.pop('cart')
self.cart = cart
except:
pass
super().__init__(*args, **kwargs)
variation_field = self.fields['variation']
variation_field.queryset = Variation.objects.filter(
product=product
)
variation_field.widget = MySelect(variations=variation_field.queryset)
def save(self):
cart_item = super().save(commit=False)
cart_item.cart = self.cart
cart_item.save()
return cart_item
但它不会调用render_option(),所以它不会在template 中显示任何内容...
这有什么问题?
【问题讨论】:
-
我评论说因为我无法在
Meta类中访问self.xxx。发生错误 -
您使用的
Django版本是什么?
标签: django django-forms