我想了解我们在模型中使用的元类。我在文档中找到了它。我记得在模型表单中添加了元类。似乎模型元类和模型表单元类是不同的。它们有何不同,模型表单中的元选项是什么。
在认识论中,meta是一个(古老的)希腊词,意思是关于。因此,它是一个类,它说明了有关模型或ModelForm
。这个名字基本上是他们唯一的共同点。
模型的Meta
类将指定模型的详细名称等,相应数据库表中定义的约束和索引等。Django 文档中有一个部分列出了模型的所有Meta
选项。
另一方面,ModelForm
Meta
将向ModelForm
解释它应该如何为给定模型构建表单。通常,Meta
定义为其构建ModelForm
的模型以及分别指定要包含/排除的字段的fields
或exclude
。此外,文档的覆盖默认字段部分列出了所有其他Meta
选项,用户可以在其中(稍微)更改字段在ModelForm
中的定义方式。源代码 [GitHub] 还列出了ModelForm
Meta
的所有选项:
class ModelFormOptions: def __init__(self, options=None): self.model= getattr(options, 'model', None) self.fields= getattr(options, 'fields', None) self.exclude= getattr(options, 'exclude', None) self.widgets= getattr(options, 'widgets', None) self.localized_fields= getattr(options, 'localized_fields', None) self.labels= getattr(options, 'labels', None) self.help_texts= getattr(options, 'help_texts', None) self.error_messages= getattr(options, 'error_messages', None) self.field_classes= getattr(options, 'field_classes', None)