Python 向ModelForm上的queryset字段添加类属性

Python 向ModelForm上的queryset字段添加类属性,python,django,django-forms,Python,Django,Django Forms,因此,我试图在我的模型表单上向该字段添加一个class属性,以允许引导样式: category = forms.ModelChoiceField(queryset=Category.objects.all()) 我试过这个: category = forms.ModelChoiceField(queryset=Category.objects.all(), widget=forms.ModelChoiceField(attrs={'class':'form-control'})) 得到了这个

因此,我试图在我的模型表单上向该字段添加一个class属性,以允许引导样式:

category = forms.ModelChoiceField(queryset=Category.objects.all())
我试过这个:

category = forms.ModelChoiceField(queryset=Category.objects.all(), widget=forms.ModelChoiceField(attrs={'class':'form-control'}))
得到了这个错误:

TypeError: __init__() missing 1 required positional argument: 'queryset'
我的完整模型:

class NewListingForm(forms.ModelForm):
    class Meta:
        model = Listing
        fields = ["title", "description", "start_price", "image", "category"]


    title = forms.CharField(widget=forms.TextInput(attrs={'autocomplete':'off', 'class':'form-control'}))
    description = forms.CharField(widget=forms.TextInput(attrs={'autocomplete':'off', 'class':'form-control'}))
    start_price = forms.DecimalField(label='Starting Bid Price (£)', widget=forms.NumberInput(attrs={'class':'form-control'}))
    image = forms.URLField(widget=forms.URLInput(attrs={'autocomplete':'off', 'class':'form-control'}))
    category = forms.ModelChoiceField(queryset=Category.objects.all(), widget=forms.ModelChoiceField(attrs={'class':'form-control'}))
(我本来打算使用字段=[]标签={}小部件={}格式,但我无法解决如何使用queryset字段来实现这一点)

这是一个表单字段,而不是小部件

要更新widget类,可以按照以下方法进行操作:

class NewListingForm(forms.ModelForm):
    # rest of your fields
    category = forms.ModelChoiceField(
        queryset=Category.objects.all(),

    )
    category.widget.attrs.update({'class': 'form-control'})
类NewListingForm(forms.ModelForm):
#你的其他领域
类别=forms.ModelChoiceField(
queryset=Category.objects.all(),
)
category.widget.attrs.update({'class':'formcontrol'})
您还可以通过将有效的小部件类指定为

类NewListingForm(forms.ModelForm):
#你的其他领域
类别=forms.ModelChoiceField(
queryset=Category.objects.all(),
widget=forms.Select(attrs={'class':'formcontrol'})
#'modelcooicefield'正在使用'Select'窗口小部件作为默认值
)
参考文献
class NewListingForm(forms.ModelForm):
    # rest of your fields
    category = forms.ModelChoiceField(
        queryset=Category.objects.all(),
        widget=forms.Select(attrs={'class': 'form-control'})
        # `ModelChoiceField` is using the `Select` widget bu default

    )