Виджет класса формы Django с выпадающим списком, заполняемым из базы данных

Я использую Django 3.2 и пытаюсь создать класс формы, поле которой (категория) заполняется из модели базы данных.

Вот фрагмент класса моей формы:

class ArticleForm(forms.ModelForm):
    # ...
   
    class Meta:
        model = Article
        fields = ['title', 'teaser', 'category', 'guest_author','content', 'tags', 'is_published']
        categories = [] #forms.ModelChoiceField(queryset=ArticleCategory.objects.all().order_by('name'))

        widgets = {
            'guest_author': forms.TextInput(attrs={'class': 'form-control input'}),
            'title': forms.TextInput(attrs={'class': 'form-control input'}),
            'teaser': forms.Textarea(attrs={'class': 'form-control input'}),
            'category': forms.Select(choices=categories, attrs={'class': 'form-control input'}),
            'content': forms.Textarea(attrs={'class': 'form-control input'}),
            'tags': forms.TextInput(attrs={'class': 'form-control input'}),
            'is_published': forms.CheckboxInput(attrs={'class': 'form-control-input'})
        }

Я обнаружил, что если я создам поле как атрибут экземпляра следующим образом:

category = forms.ModelChoiceField(queryset=ArticleCategory.objects.all().order_by('name'))

>

Тогда я могу использовать форму (без возникновения ошибок). Но я хочу иметь возможность указать виджет, который будет использоваться для этого поля, используя приведенное выше объявление - есть ли способ сделать это - или я ограничен простым объявлением поля как переменной экземпляра формы?

Поля формы могут принимать необязательный аргумент widget при их определении, поэтому вы должны быть в состоянии сделать что-то вроде этого:

category = forms.ModelChoiceField(queryset=ArticleCategory.objects.all().order_by('name'),
                       widget= the widget you want to use)
Вернуться на верх