0

假设我必须覆盖ModelForm(in forms.py) 以设置labelswidgets不同。IE:

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

您需要覆盖表单中的字段。只需使用与模型中相同的字段名称:

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 回答
2
self.fields['someVal'].required = True

是的,就这么简单:) 你的字段字典中的类具有相同的属性

于 2013-01-04T16:29:47.313 回答