Class Meta 作用: 使用内部类来提供一些 metadata, 以下列举一些常用的 meta:
1,abstract: 如下段代码所示, 将 abstract 设置为 True 后, CommonInfo 无法作为一个普通的 Django 模型, 而是作为一个抽象基类存在, 作用 是为其他的类提供一些公有的属性. 如 Student 会拥有三个属性, 即 name,age,home_group. 利于公用信息的分解, 避免重复编码.
- from django.db import models
- class CommonInfo(models.Model):
- name = models.CharField(max_length=100)
- age = models.PositiveIntegerField()
- class Meta:
- abstract = True
- class Student(CommonInfo):
- home_group = models.CharField(max_length=5)
2,db_table: 用来指定 model 对应的数据库中的表名, 建议的格式为 "this_is_table_name", 即小写加下划线的格式. 若不指定也可 以, Django 会自动生成相应的表名, 但是, 自动生成的表名的可读性就不能够保证了.
3,ordering: 排序操作, 例如我们需要根据 date 字段来进行升序排列, 则为 ordering=['date'], 若为降序排列, 则设置为 ordering=['-date'], 应该注意到的是, ordering 是个列表的表现形式, 说明是可以接其他字段的, 比如 ordering=['-date','name'], 则表示先按 date 进行降序排列, 再按名字进行升序排列. 虽然个人不建议使用 ordering, 但谁让 Django 提供了呢...
4,unique_together: 在数据进行写表操作的时候, 我们往往会遇到两个字段组合起来需要唯一的情况, 例如 IP 和 port, 往往是唯一存在的, 这个时候, unique_together 就很有用了, 可以设置成 unique_together = (("ip", "port"),) 当然了, 若该 model 中只有这两个字段需要做唯一性验证, 也可以使用单个元组进行设置, 即 unique_together =("ip", "port"), 是
来源: http://www.bubuko.com/infodetail-3101004.html