【发布时间】:2021-11-26 15:57:27
【问题描述】:
我在收到产品订单时使用 formset_factory
product_formset = formset_factory(OrderProductsForm,extra=5)
当我在“OrderProductsForm(forms.ModelForm):”中使用 “qeryset=Product.objects.all()” 时它起作用了
self.fields['product'] = ModelChoiceField(queryset=Product.objects.all(),empty_label="Ürün Seciniz", widget=forms.Select(attrs={"onChange":'stokKontrol(this.value,this.id)'}))
但它会获取所有产品,因此页面加载时间会增加。
我想使用 “queryset=Product.objects.none()”
但那时当我在 view.py 中检查表单时
if request.method == "POST":
formset = product_formset(request.POST)
if formset.is_valid():
得到一个错误 “选择一个有效的选项。该选择不是可用的选择之一。” 你有什么建议吗?谢谢
Forms.py
class OrderProductsForm(forms.ModelForm):
class Meta:
model = OrderProducts
fields = ['amount']
def __init__(self, *args, **kwargs):
super(OrderProductsForm, self).__init__(*args, **kwargs)
self.fields['product_category'] = ModelChoiceField(queryset=ProductCategory.objects.all(),empty_label="Ürün Grubunu seciniz",
widget=forms.Select(attrs={"onChange":'myFunction(this.value,this.id)'}))
#self.fields['product'] = ModelChoiceField(queryset=Product.objects.all(),empty_label="Ürün Seciniz", widget=forms.Select(attrs={"onChange":'stokKontrol(this.value,this.id)'}))
self.fields['product'] = ModelChoiceField(queryset=Product.objects.none() ,empty_label="Ürün Seciniz",required=False,widget=forms.Select(attrs={"onChange":'stokKontrol(this.value,this.id)'}))
self.fields['stok'] = forms.CharField(required=False,disabled=True,max_length=5)
【问题讨论】: