擅长:python、mysql、java
<p>我会在视图中创建一个动态窗体作为一个闭包,类似这样(完全未经测试)</p>
<pre><code>def my_view(request, ...):
product = ...
if product.has_options():
product_widget = forms.Select(choices=product.get_options())
else:
product_widget = forms.HiddenInput()
class ProductAddToCartForm(forms.Form):
quantity = forms.IntegerField(widget=forms.TextInput(attrs={'size':'2', 'value':'1', 'class':'quantity', 'maxlength':'5'}), error_messages={'invalid':'Please enter a valid quantity.'}, min_value=1)
size_option = forms.ChoiceField(widget=product_widget)
product_slug = forms.CharField(widget=forms.HiddenInput())
form = ProductAddToCartForm(request=request, label_suffix=':')
</code></pre>
<p>还有其他方法可以做到这一点,但我认为闭包方式有助于实现最简洁的代码。在</p>