代码之家  ›  专栏  ›  技术社区  ›  arcee123

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

  •  1
  • arcee123  · 技术社区  · 6 年前

    我正在开发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'
    
    2 回复  |  直到 6 年前
        1
  •  4
  •   Aron Griffis    6 年前

    你路过了 forms.ModelChoiceField 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'}),
        )
    
        2
  •  -2
  •   schrodingerscatcuriosity kmahankali    6 年前

    尝试对模型使用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'
            }
        ))
    ....