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

Mit*_*tch 9 django django-admin

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

Chr*_*att 22

虽然丹尼尔罗斯曼的答案有效,但它并不是最好的解决方案.它需要重新声明表单字段,需要一些代码重复.例如,如果你verbose_name在该字段上有一个,那么你还必须添加label='My verbose_name already set on model'到该CharField行,因为重新声明整个字段基本上会删除模型中为该字段设置的所有内容.

更好的方法是覆盖表单的__init__方法并明确设置field.requiredTrueFalse在那里.

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

        self.fields['myfield'].required = True
Run Code Online (Sandbox Code Playgroud)


Dan*_*man 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
Run Code Online (Sandbox Code Playgroud)

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