7

ModelFormManyToManyField を使用したモデルのdjangoがあります。このフィールドのウィジェットを に変更したいCheckboxSelectMultiple。フォーム定義のフィールドをオーバーライドせずにこれを行うことはできますか?

私は常に次のようなコードを使用しています。

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

これを行う他の方法はありますか?

編集: Django 1.1.1 プロジェクトにはこれが必要です

4

2 に答える 2

26

Django 1.2+ を使用している場合はwidgets、内部の Meta クラスでタプルを使用できます。

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

ドキュメントを参照してください。

于 2010-07-02T21:15:01.000 に答える
7

これを行う別の方法は、ModelFormのinitで行うことです。

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

    [...]
于 2010-07-02T21:11:54.133 に答える