Django - 模型层 - 模型的元数据Meta

目录

  • 在模型中增加元数据
  • 元数据选项
    • abstract
    • app_label
    • base_manager_name
    • db_table
    • get_latest_by
    • managed
    • ordering
    • permissions
    • default_permissions
    • proxy
    • required_db_vendor
    • unique_together
    • index_together
    • verbose_name
    • label

模型的元数据, 指的是 除了字段外的所有内容

在模型中增加元数据

需要在模型类中添加一个子类, 名字是固定的Meta.

from django.db import models

class Ox(models.Model):
	horn_length = models.IntegerField()
	
	class Meta:
		ordering = ["horn_length"]

元数据选项

abstract

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

app_label

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

app_label = 'myapp'

base_manager_name

模型的_base_manager管理器的名字,默认是'objects'

db_table

指定在数据库中, 当前模型生成的数据表的表名, 比如 :

db_table = 'my_freinds'

get_latest_by

get_latest_by = "order_date"  # 根据order_date升序排列
get_latest_by = ['-priority', 'order_date'] # 根据priority排序排列, 如果发生同序, 则使用order_date升序排序

managed

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

  • 如果设置为False,将不会针对当前模型创建和删除数据库表,也就是说Django暂时不管这个模型了。

ordering

用于指定该模型生成的所有对象的排序方式

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

permissions

  • 该元数据用于当创建对象时增加额外的权限。它接收一个所有元素都是二元元组的列表或元组,每个元素都是(权限代码, 直观的权限名称)的格式。

default_permissions

  • Django默认会在建立数据表的时候就自动给所有的模型设置(‘add’, ‘change’, ‘delete’)的权限,也就是增删改。你可以自定义这个选项

proxy

如果设置了proxy = True,表示使用代理模式的模型继承方式

required_db_vendor

声明模型支持的数据库。Django默认支持sqlite, postgresql, mysql, oracle。

unique_together

unique_together = ['name', 'birth_day', 'address']

表示如果两个用户 'name', 'birth_day', 'address' 都相同, 则会被Django拒绝

index_together

联合索引

verbose_name

用于设置模型对象的直观、人类可读的名称,用于在各种打印、页面展示等场景。可以用中文。

label

label等同于app_label.object_name。例如polls.Question,polls是应用名,Question是模型名。

你可能感兴趣的:(Django进阶,django)