0

設定するか、別の方法でModelForm(in forms.py)をオーバーライドする必要があるとします。すなわち:labelswidgets

class SomeForm(ModelForm):
    def __init__(self,*args,**kwargs):
        super(someForm, self).__init__(*args, **kwargs)
            self.fields['someVal'].label = ...
            self.fields['someVal'].widget = ...

次に、どのように設定しrequired=Trueますか?

私はそうする前にこれを行うことができることを知っています__init__

class SomeForm(ModelForm):
    someVal = CharField(required=True)  # << here
    def __init__(self,*args,**kwargs):
        super(someForm, self).__init__(*args, **kwargs)
            self.fields['someVal'].label = ...
            self.fields['someVal'].widget = ...

しかし、私はいくつかの動的なことをやっていて、必要なものを設定したいと思います__init__

4

2 に答える 2

2
self.fields['someVal'].required = True

はい、これと同じくらい簡単です:)フィールドディクショナリのクラスで使用できるのと同じ属性があります

于 2013-01-04T16:29:47.313 に答える
2

フォームのフィールドを上書きする必要があります。モデルと同じフィールド名を使用するだけです。

class SomeForm(forms.ModelForm):
    field_a = forms.CharField(
        'My new label', max_length=30, required=True)  # << here

    def __init__(self,*args,**kwargs):
        super(someForm, self).__init__(*args, **kwargs)

    class Meta:
        model = MyModel

なぜこのアプローチ?

required、、などの多くの属性をオーバーライドする場合は、新しいフィールドを定義してフィールドを直接オーバーライドするのが良い方法だと思いますlabelwidget

于 2013-01-04T16:30:01.197 に答える