I use formset_factory when I get an order for products
product_formset = formset_factory(OrderProductsForm,extra=5)
It works when I use
queryset = Product.objects.all()
in OrderProductsForm(forms.ModelForm)
:
self.fields['product'] = ModelChoiceField(queryset=Product.objects.all(),empty_label="Ürün Seciniz", widget=forms.Select(attrs={"onChange":'stokKontrol(this.value,this.id)'}))
but it gets all products so page load time increase.
I would like to use queryset=Product.objects.none()
.
But at that point when I check the form in my view.py
if request.method == "POST":
formset = product_formset(request.POST)
if formset.is_valid():
I get an error
Select a valid choice. That choice is not one of the available choices
Do you have any suggestion ? Thanks
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)