Django 中的 Meta 到底是什么

What is exactly Meta in Django

我想简单地知道什么是 Django 中的 Meta class 以及它们的作用

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,它是一个 class,您可以在其中描述模型的某些方面。例如,默认情况下应如何对记录进行排序,该模型的数据库名称 table 是什么,等等

meta options [Django-doc] 上的文档说:

Model metadata is "anything that’s not a field", such as ordering options (ordering), database table name (db_table), or human-readable singular and plural names (verbose_name and verbose_name_plural). None are required, and adding class Meta to a model is completely optional.

Django 文档包含 exhaustive list of Django's model Meta options. For example for the ordering attribute [Django-doc]:

The default ordering for the object, for use when obtaining lists of objects. (...)

这里的 ordering 指定如果你查询 Author 对象,比如 Author.objects.all(),那么 Django 将在你没有指定任何顺序的情况下,对 Authors 按 last_name 首先,如果 并列 ,按 first_name.

排序

你问的是两个不同的问题:

  1. Meta Django 模型中的内部 class:

    这只是一个 class 容器,模型附有一些选项(元数据)。它定义了诸如可用权限、关联数据库 table 名称、模型是否抽象、名称的单数和复数版本等内容。

    这里有简短的解释:Django docs: Models: Meta options

    可用元选项列表在这里:Django docs: Model Meta options

从这里复制,考虑喜欢: How does Django's Meta class work?

Read this for further understanding