在Django admin中,我可以要求模型中的字段,但不是内联时的字段吗?

时间:2009-06-29 20:16:09

标签: django django-admin

在django admin中,如果模型是独立编辑的,我想要的字段。如果它是内联的,我不希望它们被要求。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:21)

虽然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

答案 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不是。