什么是表格工厂以及何时使用它们?

时间:2017-11-14 11:50:01

标签: django django-forms

有人想尝试简单解释一下form_factory或modelform_factory与表单/模型形式的关系吗?

  • 为什么要使用工厂?
  • 是否有正式的技术定义 工厂方法?

1 个答案:

答案 0 :(得分:1)

modelform_factory方法是返回ModelForm类的方法。这是一个有用的原因的例子。

如果你有一个简单的视图使用单个模型的表单,那么就不需要工厂了,你可以简单地定义表单:

class ProductForm(forms.ModelForm):
    class Meta:
        model = Product

def add_product_view(request):
    form = ProductForm()
    ...

但是,如果您的视图需要处理多个模型,那么您可能不希望为每个模型定义表单类。 modelform_factory允许您动态创建表单类。

apps.get_model('newapp', 'mymodel')

def add_model_view(request, model_name):
    Model = apps.get_model('myapp', model_name)
    Form = modelform_factory(Model)

Django管理员使用modelform_factory动态生成模型表单类。这意味着每次在Django管理员中注册模型时都不需要定义模型表单。