【问题标题】:Django - Adding fields to a ModelForm that inherits from a parent modelform?Django - 向继承自父模型表单的模型表单添加字段?
【发布时间】:2018-09-13 15:43:15
【问题描述】:

例如。型号 = Foo Foo.fields(a,b,c,d)

FooModelForm1(forms.Modelform): 字段 = [a, b, c] 等等

FooModelForm2(FooModelForm1): 字段 = [d]

您可以看到模型中存在所有 4 个字段,但 FooModelForm1 仅使用 3 个字段,而我希望 FooModelForm2 包含字段 [d] 以及其他字段。

在文档中,它解释了您可以排除字段,因此我知道一种选择是翻转我的表单并最初包含字段 [d],但我很好奇是否可能相反。

我看到了修改 FooModelForm2 元数据的响应,但这似乎对我不起作用,例如:

class Meta(FooModelForm1.Meta):
        fields = ReqLineForm.Meta.fields + ['d'] 

已解决

我在将视图中调用的表单切换到我创建的继承了旧表单的新表单时出错了。因此,如果您使用列表或元组来设置字段,那么添加字段就像我在更新依赖项上方放置的一样简单。

【问题讨论】:

    标签: django django-models django-forms


    【解决方案1】:

    类似这样的...

    class FooModelForm2(FooModelForm1):
         field_d = forms.EmailField(required=True)
    
        class Meta:
            model = User
            fields = ("field_a", "field_b", "field_c", "field_d")
    

    【讨论】:

    • 我必须重新创建该字段,即使它已经存在于模型中?还将模型和字段分配给子表单?我觉得他们需要另一种方式,因为这会违反 DRY,我不会在这里看到继承的目的。
    • 啊,如果模型中已经存在该字段,则可以跳过此行。
    猜你喜欢
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 2013-07-09
    • 2011-06-11
    相关资源
    最近更新 更多