Как изменить виджет ManyToManyField на CheckboxSelectMultiple, не переопределяя определение поля в ModelForm

У меня есть django ModelForm для модели с ManyToManyField. Я хочу изменить виджет для этого поля кCheckboxSelectMultiple. Я могу сделать это, не переопределяя поле в определении формы?

Я постоянно использую код, подобный этому:

class MyModel(ModelForm):
    m2m_field = forms.ModelMultipleChoiceField(queryset = SomeModel.objects.all(),
                                               widget = forms.CheckboxSelectMultiple())

Там другой путь состоит в том, чтобы сделать это?

Править: Мне нужно это для Django 1.1.1 проекта

7
задан dzida 5 July 2010 в 21:27
поделиться

2 ответа

Другой способ сделать это - сделать это в init ModelForm:

class MyModel(ModelForm):
    def __init__(self, *args, **kwargs):
        super(MyModel, self).__init__(*args, **kwargs)
        self.fields['m2m_field'].widget = forms.CheckboxSelectMultiple()

    [...]
7
ответ дан 6 December 2019 в 05:42
поделиться

Если вы используете Django 1.2+, вы можете использовать кортеж widgets во внутреннем классе Meta.

class MyModelForm(forms.ModelForm):
    class Meta:
        widgets = {'m2m_field': forms.CheckboxSelectMultiple}

См. документацию .

26
ответ дан 6 December 2019 в 05:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: