django model中的class Meta

目录

一、model中的class Meta

通过内嵌类class Meta 给model定义元数据

class Person(models.Model):
    name = models.Charfield(max_length=16)
    age = models.IntegerField()
   
	class Meta:
        abstract = True

        
class Student(Person):
    stu_id = models.CharField(max_length=5)

1)abstract

设为True之后,Person就不能作为一个普通的Django模型,而是作为一个抽象类的存在,提供一些公有的属性。

2)db_table

指定自定义的数据库表名,不然就按照django自己的规则生成数据库表名。

class Meta:
    db_table = 'xxxx'

3)app_label

只在一种情况下使用,就是你的模型类不在默认的应用程序包下的models.py文件中,这时候你就要指定这个模型类是哪个应用程序的了,比如你在别的地方写了一个模型类,但是这个模型类是属于app01的

app_label = 'app01'

4)db_tablespace

有些数据库有数据表空间,可以指定这个模型对应的数据库表放在哪个数据库表空间。

5)get_latest_by

由于django的管理方法中有个lastest()方法,就是得到最近一行记录,如果你的数据模型中有DateField或DateTimeField类型的字段,你可以通过这个选项指定lastest()是按照哪个字段进行选取的。

一个 DateField 或 DateTimeField 字段的名字. 若提供该选项, 该模块将拥有一个 get_latest() 函数以得到 "最新的" 对象(依据那个字段):

get_latest_by = "order_date"

6)managed

由于django对自动生成映射的数据库表,如果不需要这么做,可以把managed的值设置为False。默认为True,这时Django可以自动对数据库进行migrate或migrations、删除等操作,

7)ordering

ordering=['order_date'] 
# 按订单升序排列
ordering=['-order_date'] 
# 按订单降序排列,-表示降序
ordering=['?order_date'] 
# 随机排序,?表示随机
ordering = ['-pub_date', 'author']
# 对 pub_date 降序,然后对 author 升序

8)verbose_name

另起一个名字

verbose_name = 'xxx'

9)verbose_name_plural

指定模型的复数形式是什么,不提供,django会自动使用verbose_name + 's'的形式命名。

verbose_name_plural = "xxxs"
上一篇:Django模型之Meta


下一篇:django rest 实现多图片上传