从相同模型创建模型表单集,但具有不同的模型形式

时间:2014-02-21 10:10:23

标签: django django-forms

我的Django项目中有一个Image模型。由于Image的类型不同,我根据每种类型创建了三个ModelForms:

class Xray(ModelForm):
    #extra_field: Choice Field with specific options for Xray
    class Meta:
        model = Image

class Internal(ModelForm):
    #extra_field: Choice Field with specific options for Internal
    class Meta:
        model = Image

class External(ModelForm):
    #extra_field: Choice Field with specific options for External
    class Meta:
        model = Image

每个ModelForm都实现了一个保存逻辑。我想为每个Image类型创建一个模型formset,但是想为每种类型的Image使用正确的ModelForm。我不会使用这个formset进行编辑,因此我总是希望它是空的并且有5个表单(5个项目)。我似乎无法在django docs中找到我可以使用特定表单的formset。只有特定的formset(继承自BaseModelFormSet)

是否可以为每个model_formset使用特定的表单?

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

from django.forms.models import modelformset_factory

from someproject.someapp.models import Image
from someproject.someapp.forms import Internal


ImageFormSet = modelformset_factory(Image, form=Internal)

以下是modelform_factory的文档,但未提及form参数。但是,在其中的示例下面的“注释”中,函数委托给formset_factory,其被记录为采用form参数。这只是一个小文档问题,可能是创建Django分支,对文档进行更新以及创建拉取请求的一个很好的理由。