有人想尝试简单解释一下form_factory或modelform_factory与表单/模型形式的关系吗?
答案 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管理员中注册模型时都不需要定义模型表单。