在django admin中,如果模型是独立编辑的,我想要的字段。如果它是内联的,我不希望它们被要求。有没有办法做到这一点?
答案 0 :(得分:21)
虽然Daniel Roseman的回答有效,但它并不是最好的解决方案。它需要重新声明表单字段,需要一些代码重复。例如,如果您在该字段上有verbose_name
,则还必须将label='My verbose_name already set on model'
添加到CharField
行,因为重新声明整个字段基本上会删除模型上设置的所有内容对于那个领域。
更好的方法是覆盖表单的__init__
方法,并明确将field.required
设置为True
或False
。
class MyModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(MyModelForm, self).__init__(*args, **kwargs)
self.fields['myfield'].required = True
答案 1 :(得分:10)
不确定。只需定义一个自定义表单,并覆盖必填字段以设置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不是。