我想简单地了解 Django 中的 Meta 类以及它们的作用。
from django.db import models
Class Author(models.Model):
first_name=models.CharField(max_length=20)
last_name=models.CharField(max_length=20)
class Meta:
ordering=['last_name','first_name']
Meta这个词起源于古希腊语,意思是“meta用于描述自我反思或自我引用的事物。”。特定于 Django,它是一个类,您可以在其中描述模型的某些方面。例如,默认情况下记录应如何排序、该模型的数据库表的名称是什么,等等。
关于 元选项 [Django-doc] 的文档说:
模型元数据是“任何不是字段的内容”,例如排序选项 (
)、数据库表名称 (ordering
) 或人类可读的单数和复数名称 (db_table
和verbose_name
)。没有任何要求,并且向模型添加类verbose_name_plural
是完全可选的。Meta
Django 文档包含Django 模型
Meta
选项的详尽列表。例如对于 ordering
属性 [Django-doc]:
对象的默认顺序,用于获取对象列表时使用。 (...)
这里
ordering
指定如果您查询 Author
对象,例如 Author.objects.all()
,那么如果您没有指定任何排序,Django 将首先按 Author
对 last_name
进行排序,并且在以下情况下领带,按 first_name
订购。
您问的是关于两个不同事物的问题:
Meta
Django 模型中的内部类:
这只是一个类容器,其中包含一些附加到模型的选项(元数据)。它定义了诸如可用权限、关联的数据库表名称、模型是否抽象、名称的单复数版本等。
简短说明在这里:Django 文档:模型:元选项
可用元选项列表位于:Django 文档:模型元选项
从这里复制的,考虑喜欢: Django的Meta类是如何工作的?
Django 中的元类是定义其他类(例如模型和表单)行为的类。它用于提供有关类的附加信息,例如其数据库表名称、排序和其他选项。元类用于自定义 Django 模型和表单的行为。
对于 Django 5.0,您可以在以下链接中找到各种类元选项 - Django 类元官方文档