我正在处理函数(在Django 1.4,python 2.7.2+中),它为指定的Model生成Form并返回它。 我在使用带有3个参数的type()方法时遇到了麻烦,因为我想指定Form的内部Meta类。 Django文档提供了一个自动生成的Form for Model的示例:
class PartialAuthorForm
m(ModelForm):
class Meta:
model = Author
现在我想概括它并自动创建表单。所以我想在返回的Form中指定Meta,并在其中定义“model = model_cls”。
from django.forms import ModelForm
def generate_form_for(model_cls):
ret_cls = type(model_cls.__name__ + "Form", (ModelForm,), {???})
我不知道“???”应该换成。你呢?
答案 0 :(得分:2)
我通过做这样的事情解决了这个问题:
Meta = type('Meta', (), {
'model': ExampleModel,
})
ExampleForm = type('ExampleForm', (), {
'Meta': Meta,
})
答案 1 :(得分:0)
检查Django modelform_factory
的工作原理:
https://github.com/django/django/blob/master/django/forms/models.py#L372
Meta
是类属性。