2

我正在研究为指定模型生成表单并返回它的函数(在 Django 1.4、python 2.7.2+ 中)。我在使用带有 3 个参数的 type() 方法时遇到了麻烦,因为我想指定 Form 的内部 Meta 类。Django 文档给出了一个模型自动生成表单的例子:

class PartialAuthorForm
    m(ModelForm):
        class Meta:
            model = Author

现在我想概括它并自动制作表格。所以我想在返回的表单中指定 Meta,并在其中指定属性“model = model_cls”。

from django.forms import ModelForm
def generate_form_for(model_cls):
    ret_cls = type(model_cls.__name__ + "Form", (ModelForm,), {???})

不知道“???” 应替换为。你?

4

2 回答 2

2

我已经通过执行以下操作解决了这个问题:

Meta = type('Meta', (), {                                                   
    'model': ExampleModel,                                                                                                           
})                                                                                                                                                           

ExampleForm = type('ExampleForm', (), {                                                                             
    'Meta': Meta,                                                                                                              
})
于 2012-12-06T13:28:13.293 回答
0

检查 Django 是如何modelform_factory工作的:

https://github.com/django/django/blob/master/django/forms/models.py#L372

Meta是类属性。

于 2012-12-06T14:51:59.140 回答