字段参数:
null:用于表示某个字段可以为空
unique:如果设置为 unique=True,则该字段在此表中必须是唯一的
db_index:如果 db_index=True,则代表着为此字段设置数据库索引
default:为该字段设置默认值
关系字段参数:
to:设置要关联的表
to_field:设置要关联的表的字段
related_name:反向操作时,使用的字段名,用于代替原反向查询时的 '表名_set'
related_query_name:反向查询操作时,使用的连接前缀,用于替换表名
db_constraint:是否在数据库中创建外键约束,默认为 True
on_delete:当删除关联表中的数据时,当前表与其关联的行的行为
on_delete 的值:
models.CASCADE:删除关联数据,与之关联也删除。默认的,可以不写,在 Django 2 后需要写上。
models.DO_NOTHING:删除关联数据,引发错误 IntegrityError
models.PROTECT:删除关联数据,引发错误 ProtectedError
models.SET_NULL:删除关联数据,与之关联的值设置为 null(前提 ForeignKey 字段需要设置为可空)
models.SET_DEFAULT:删除关联数据,与之关联的值设置为默认值(前提 ForeignKey 字段需要设置默认值)
models.SET:删除关联数据,与之关联的值设置为指定值,设置:models.SET(值);与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)
from django.db import models class Person(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=32) age = models.IntegerField() birthday = models.DateField(auto_now_add=True) class Man(models.Model): id = models.AutoField(primary_key=True) # to="Person" 表示跟 Person 关联 # to_field="name" 表示跟 Person 表的 name 字段关联 # on_delete=models.CASCADE 关联数据被删除时,关联也会被删除 # db_constraint=False 表示两个关联数据在数据库操作上没有关系 name = models.ForeignKey(to="Person", on_delete=models.CASCADE, db_constraint=False)