Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建具有django'的类;使用type()方法创建内部元类_Python_Django - Fatal编程技术网

Python 创建具有django'的类;使用type()方法创建内部元类

Python 创建具有django'的类;使用type()方法创建内部元类,python,django,Python,Django,我正在处理函数(在Django 1.4、python 2.7.2+)中,该函数为指定模型生成表单并返回表单。 使用带有3个参数的type()方法时遇到问题,因为我想指定表单的内部元类。Django文档给出了模型自动生成表单的示例: class PartialAuthorForm m(ModelForm): class Meta: model = Author 现在我想推广它,自动生成表单。所以我想在返回的表单中指定Meta,并在其中指定属性“mo

我正在处理函数(在Django 1.4、python 2.7.2+)中,该函数为指定模型生成表单并返回表单。 使用带有3个参数的type()方法时遇到问题,因为我想指定表单的内部元类。Django文档给出了模型自动生成表单的示例:

class PartialAuthorForm
    m(ModelForm):
        class Meta:
            model = Author
现在我想推广它,自动生成表单。所以我想在返回的表单中指定Meta,并在其中指定属性“model=model\u cls”


我不知道应该用什么替换“?”。是吗?

我通过这样做解决了这个问题:

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

ExampleForm = type('ExampleForm', (), {                                                                             
    'Meta': Meta,                                                                                                              
})

检查Django
modelform\u工厂的工作原理:

Meta
是类属性

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

ExampleForm = type('ExampleForm', (), {                                                                             
    'Meta': Meta,                                                                                                              
})