objects 返回没有删除的所有数据
all_objects 返回所有数据
delete 删除数据,假删
undelete 恢复假删数据
模型字段类型:
models.CharField() # 字符串类型
models.TextField() # 文本类型
models.IntegerField() # int类型
models.BooleanField() # bool类型
models.NullBooleanField() # 允许为空的bool类型
models.DateField() # 日期类型 年月日
models.DecimalField() # 金额类型 可以指定长度和小数位数 max_digits=15, decimal_places=2, 总长度15位,小数位为2
models.EmailField() # 邮箱类型
models.FloatField() # 浮点数类型
models.TimeField() # 时间类型
当想指定表主键时,例如想指定主键为UUID:id = models.UUIDField(primary_key=True, auto_created=True, default=uuid.uuid4, editable=False)
models.ForeignKey(OtherModel, on_delete=models.PROTECT, verbose_name=‘label’, related_name=‘related_name’) # 外键类型
models.OneToOneField(OtherModel, on_delete=models.PROTECT, verbose_name=‘label’, related_name=‘related_name’) # 一对一的外键类型
models.ManyToManyField(OtherModel, verbose_name=‘label’, blank=True, related_name=‘related_name’) # 多对多类型,django会自己维护一个中间表。如果需求更多,可以自己使用中间表实现多对多关系
on_delete属性选项的意义:
models.PROTECT:当外键数据删除时,指向外键的的数据不删除。
models.CASCADE:当外键数据删除时,指向外键的数据一起删除。
models.SET_NULL:当外键数据删除时,指向外键的数据该列设置为null。
models.SET_DEFAULT:当外键数据删除时,指向外键的数据该列恢复默认值。
models.SET(自定义方法):当外键数据删除时,指向外键的数据使用自定义方法来设置值。具体可参考官方文档。
字段常用options:
unique=True # 设置唯一性约束也是唯一索引
db_index=True # 设置普通索引
null = True # 允许值为空
blank = True # 允许键为空,指定的字段可以不传
choices = ((0,‘男’),(‘1’,‘女’),) # 选项类型
default = 1 # 指定默认值
verbose_name = ‘描述’ # 指定label 或字段描述
auto_now_add = True # 在创建的时候插入时间
auto_now = True # 每次修改都会更新时间
max_length = 255 # 指定字段容量长度,CharField必须要指定
元类Meta常用options:
abstract = True # 表示该模型是抽象基类,其他模型可以继承这个模型。
app_label = ‘myapp’ # 声明模型所属的app
db_table = ‘A_Table’ # 自定义数据表在数据库中的名称
verbose_name = ‘A表’ # 自定义数据表的表述,官方叫 对象的人类可读名称 单数形式
verbose_name_plural = verbose_name # 对verbose_name的复数描述
ordering = [‘-create_date’] # 指定数据的默认排序,该例表示根据创建时间倒序(不加-为升序)。
unique_together = [[‘name1’, ‘name2’]] # 设置联合唯一性约束,可以设置多个,为了方便起见,unique_together在处理一组字段时可以是一个一维列表。
index_together = [[‘name1’, ‘name2’]] # 设置联合索引,可以设置多个,为了方便起见,index_together在处理一组字段时可以是一个一维列表。
indexes = [
models.Index(fields=[‘last_name’, ‘first_name’]),
models.Index(fields=[‘first_name’], name=‘first_name_idx’),
] # 定义索引列表