首页 > Web开发 > 详细

元数据Meta

时间:2019-09-08 13:24:27      阅读:92      评论:0      收藏:0      [点我收藏+]

元数据,指的是“除了字段外的所有内容”,例如排序方式、数据库表名、人类可读的单数或者复数名等等。所有的这些都是非必须的,甚至元数据本身对模型也是非必须的。

在模型中增加元数据,需要在模型类中添加一个子类,名字是固定的Meta,然后在这个Meta类下面增加各种元数据选项。

class Contract(models.Model):
    """合同"""

    sn = models.CharField(u合同号, max_length=128, unique=True)
    name = models.CharField(u合同名称, max_length=64)
    memo = models.TextField(u备注, blank=True, null=True)
    price = models.IntegerField(u合同金额)
    detail = models.TextField(u合同详细, blank=True, null=True)
    start_date = models.DateField(blank=True)
    end_date = models.DateField(blank=True)
    license_num = models.IntegerField(ulicense数量, blank=True)
    create_date = models.DateField(auto_now_add=True)
    update_date = models.DateField(auto_now=True)

    class Meta:
        verbose_name = 合同
        verbose_name_plural = "合同"
        ordering = ["create_date"]

    def __str__(self):
        return self.name

 

每个模型都可以有自己的元数据类,每个元数据类也只对自己所在模型起作用。

db_table
指定在数据库中,当前模型生成的数据表的表名。
db_tablespace
自定义数据库表空间的名字。
default_related_name
默认情况下,从一个模型反向关联设置有关系字段的源模型,我们使用<model_name>_set,也就是源模型的名字+下划线+set。

这个元数据选项可以让你自定义反向关系名,同时也影响反向查询关系名!

from django.db import models

class Foo(models.Model):
    pass

class Bar(models.Model):
    foo = models.ForeignKey(Foo)

    class Meta:
        default_related_name = bars   # 关键在这里

ordering

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

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

unique_together
就是联合唯一

verbose_name
用于设置模型对象的直观、人类可读的名称。可以用中文。例如:
verbose_name = "story"
verbose_name = "披萨"

verbose_name_plural
英语有单数和复数形式。这个就是模型对象的复数名,比如“apples”。因为我们中文通常不区分单复数,所以保持和verbose_name一致也可以。

 

元数据Meta

原文:https://www.cnblogs.com/xiao-apple36/p/11484881.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!