Python Django格式的查询集
我有错误:TypeError:Python Django格式的查询集,python,django,forms,Python,Django,Forms,我有错误:TypeError:\uuuuu init\uuuu()缺少1个必需的位置参数:“queryset”。如何在\uuu init\uuuu表单中使用Queryset?除非您当前隐藏了一些信息,否则最好在模型选择字段的声明中声明Queryset: class PaymentSelectForm(forms.Form): date_from = forms.DateField() date_to = forms.DateField() website = Mod
\uuuuu init\uuuu()
缺少1个必需的位置参数:“queryset”。如何在\uuu init\uuuu
表单中使用Queryset
?除非您当前隐藏了一些信息,否则最好在模型选择字段的声明中声明Queryset
:
class PaymentSelectForm(forms.Form):
date_from = forms.DateField()
date_to = forms.DateField()
website = ModelChoiceField()
paymentmethod = forms.ChoiceField(choices=PAYCODE_CHOICES)
def __init__(self, *args, **kwargs):
super(PaymentSelectForm, self).__init__(*args, **kwargs)
applyClassConfig2FormControl(self)
self.fields['website'].queryset=Website.objects.all()
但是,如果
queryset
依赖于传递给表单的参数,或者依赖于其他表(不能优雅地将其写入SQL查询),则通常会出现这种情况。使用小部件。选项
class PaymentSelectForm(forms.Form):
date_from = forms.DateField()
date_to = forms.DateField()
website = ModelChoiceField(queryset=None)
paymentmethod = forms.ChoiceField(choices=PAYCODE_CHOICES)
def __init__(self, *args, **kwargs):
super(PaymentSelectForm, self).__init__(*args, **kwargs)
applyClassConfig2FormControl(self)
self.fields['website'].queryset=Website.objects.all()
我不明白你为什么要在
\uuuu init\uuuu
中这样做,而不是在字段本身的构造中这样做?这是django admin表单吗?还是简单的?使用forms.ModelForm而不是forms.Form。@AnupYadav:但是错误是由ModelChoiceField
构造引起的,因此无论我们使用什么类型的表单
,它都会出错,因为我们从未构造PaymentSelectForm
类。
class PaymentSelectForm(forms.Form):
date_from = forms.DateField()
date_to = forms.DateField()
website = ModelChoiceField(queryset=None)
paymentmethod = forms.ChoiceField(choices=PAYCODE_CHOICES)
def __init__(self, *args, **kwargs):
super(PaymentSelectForm, self).__init__(*args, **kwargs)
applyClassConfig2FormControl(self)
self.fields['website'].queryset=Website.objects.all()
def __init__(self, *args, **kwargs):
super(PaymentSelectForm, self).__init__(*args, **kwargs)
applyClassConfig2FormControl(self)
self.fields['website'].widget.choices=(
(choice.pk, choice) for choice in Website.objects.all()
)