25.Django模型类的元数据Meta

模型的元数据是指“除了字段外的所有内容”,比如排序方式、数据库表名、人类可读的单数或者复数名等。 元数据是非必须的。

使用方式是在模型内部增加一个Meta子类

from django.db import models

class User(models.Model):
    age = models.IntegerField()

    class Meta:         # 模型的子类,要缩进!
        ordering = ["age"]
        verbose_name_plural = "users"

上面我们定义了一个排序和复数的元数据 每个模型都可以有自己的元数据类,每个元数据类也只对自己所在模型起作用。

abstract

abstract=True,那么模型会被认为是一个抽象模型。抽象模型本身不实际生成数据库表,而是作为其它模型的父类,被继承使用

app_label

如果定义了模型的app没有在INSTALLED_APPS中注册,则必须通过此元选项声明它属于哪个app

app_label = 'siteapp'

base_manager_name

自定义模型的_base_manager管理器的名字。模型管理器是Django为模型提供的API

db_table

在数据库中,当前模型生成的数据表的表名

db_table = 'my_user'

db_tablespace

自定义数据库表空间的名字。默认值是工程的DEFAULT_TABLESPACE设置。

default_manager_name

自定义模型的_default_manager管理器的名字

default_related_name

这个元数据选项可以让你

get_latest_by

排序方式

managed

默认值为True,表示Django将按照既定的规则,管理数据库表的生命周期。

order_with_respect_to

指定的字段进行排序,通常用于关系字段

ordering

对象的排序方式,接收一个字段名组成的元组或列表。默认按升序排列,如果在字段名前加上字符“-”则表示按降序排列,如果使用字符问号“?”表示随机排列

ordering = ['pub_date']             # 表示按'pub_date'字段进行升序排列
ordering = ['-pub_date']            # 表示按'pub_date'字段进行降序排列
ordering = ['-pub_date', 'author']  # 表示先按'pub_date'字段进行降序排列,再按`author`字段进行升序排列。

indexes

索引列表

from django.db import models

class Customer(models.Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)

    class Meta:
        indexes = [
            models.Index(fields=['last_name', 'first_name']),
            models.Index(fields=['first_name'], name='first_name_idx'),
        ]
声明:原创文章,版权所有,转载请注明出处,https://litets.com。