其他分享
首页 > 其他分享> > 模型层Meta详解

模型层Meta详解

作者:互联网

模型层Meta详解

在创建表时,我们可以添加Meta类,按照官方文档的解释,它是“anything that’s not a field”(除了字段的一切属性),用来配置一张表的其他参数。

1 Meta的使用

from django.db import models

class Ox(models.Model):
    horn_length = models.IntegerField()
	# 在类中嵌套定义Meta类,每条参数占用一行
    class Meta:
        verbose_name_plural = "oxen"

2 可选字段

1)abstract

abstract=True/False(默认)

当你想要抽象出一些共有的字段(比如说创建时间、名称、修改时间等),但又不希望为这些字段创建一张表,将其设置为True

class Basicfield(models.Model):
    is_delete = models.BooleanField(default=0)
    create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
    last_update_time = models.DateTimeField(auto_now=True, verbose_name="修改时间")
    class Meta:
        abstract=True # 抽象表,数据库中不会建这张表

2)db_table

db_table = 'Table names'

Django在创建表时,默认会将app名和class类名通过下划线连接成为数据库的表名,For example, if you have an app bookstore, a model defined as class Book will have a database table named bookstore_book.

如果想要覆盖这个名字,使用这个字段,并设置成你自定义的名称。

注意:

3)unique_together

对于单个字段的,可以直接在定义字段的时候设置unique=True,对于多个字段的唯一可以使用unique_together

unique_together = ['driver', 'restaurant']  # 单组字段直接用列表

unique_together = [['driver', 'restaurant'],['name','gender']]  # 需要设置多组字段时,内部用列表分隔开

这表示这些字段在联合起来是唯一的。

注意:

4)index_together

联合索引。

index_together = ["pub_date", "deadline"]  # 单组字段直接用列表


index_together = [
    ["pub_date", "deadline"],              # 需要设置多组字段时,内部用列表分隔开
]

注意:

5)verbose_name

一个更人性化的名字,适合阅读。

verbose_name = "pizza"

6)verbose_name_plural

复数形式的verbose_name。

verbose_name_plural = "stories"

如果不加该参数,默认会使用'verbose_name'+'s'

3 更多字段

有关更多的Meta字段,参阅官方文档:https://docs.djangoproject.com/en/3.2/ref/models/options/

标签:name,models,模型,together,字段,Meta,详解,verbose
来源: https://www.cnblogs.com/yyyzyyyz/p/15464298.html