如何解决Django表单中的queryset需求问题

2024-04-26 03:17:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发Django 2.0网站,并尝试构建Django表单:

你知道吗表单.py地址:

class NewMemberstatusform(forms.Form):
    rank = forms.ModelChoiceField(queryset=models.Rank.objects.all(), widget=forms.ModelChoiceField(
        attrs={
        'class':'form-control'
        }
    ))
    unit = forms.ModelChoiceField(queryset=models.Unit.objects.all(), widget=forms.ModelChoiceField(
        attrs={
        'class':'form-control'
        }
    ))
    activate = forms.ChoiceField(choices=YesNo.YESNO_CHOICES, label="Enable Member to see their information", widget=forms.ChoiceField(
        attrs={
        'class':'form-control'
        }
    ))

我的问题是它不能正确编译。你知道吗

我收到一个错误,说我缺少rank字段中的queryset,但是正如你所看到的,它显然在类中。我错过了什么?谢谢

    class NewMemberstatusform(forms.Form):
  File "/Users/sinistersparrow/PycharmProjects/ifthqcom/app_svcrecord/forms.py", line 126, in NewMemberstatusform
    'class':'form-control'
TypeError: __init__() missing 1 required positional argument: 'queryset'

Tags: djangopyform表单modelsformswidgetattrs
2条回答

尝试对模型使用import语句:

from <myapp>.models import Rank, Unit

class NewMemberstatusform(forms.Form):
    rank = forms.ModelChoiceField(queryset=Rank.objects.all(), widget=forms.ModelChoiceField(
        attrs={
        'class':'form-control'
        }
    ))
    unit = forms.ModelChoiceField(queryset=Unit.objects.all(), widget=forms.ModelChoiceField(
        attrs={
        'class':'form-control'
        }
    ))
....

您将forms.ModelChoiceField传递给widget关键字参数,这就是导致错误的实例化。您可能希望传递forms.Select

class NewMemberstatusform(forms.Form):
    rank = forms.ModelChoiceField(
        queryset=models.Rank.objects.all(),
        widget=forms.Select(attrs={'class':'form-control'}),
    )
    unit = forms.ModelChoiceField(
        queryset=models.Unit.objects.all(),
        widget=forms.Select(attrs={'class':'form-control'}),
    )
    activate = forms.ChoiceField(
        choices=YesNo.YESNO_CHOICES,
        label="Enable Member to see their information",
        widget=forms.Select(attrs={'class':'form-control'}),
    )

相关问题 更多 >