2009-06-29 44 views

回答

16

虽然Daniel Roseman的答案有效,但这不是最好的解决方案。它需要通过重新声明表单域来重复一些代码。例如,如果您在该字段上有verbose_name,则您还必须将label='My verbose_name already set on model'添加到CharField行,因为重新声明整个字段基本上会擦除您的模型上为该字段设置的所有内容。

更好的方法是覆盖表单的__init__方法,并在那里明确地将field.required设置为TrueFalse

class MyModelForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(MyModelForm, self).__init__(*args, **kwargs) 

     self.fields['myfield'].required = True 
9

当然。只需定义一个自定义表单,并将您的必填字段覆盖以设置required = True,然后在您的管理员类中使用它。

class MyForm(forms.ModelForm): 
    required_field = forms.CharField(required=True) 

    class Meta: 
     model = MyModel 

class MyAdmin(admin.ModelAdmin): 
    form = MyForm 


class MyInlineAdmin(admin.ModelAdmin): 
    model = MyModel 

所以这里MyAdmin使用重写的表单,但MyInlineAdmin不是。

+0

非常感谢 – Mitch 2009-07-01 17:00:00

相关问题