1.ORM字段
-
AutoField
-
int自增列,必须填入参数 primary_key=True。当model中如果没有自增列,则自动会创建一个列名为id的列。
IntegerField
-
一个整数类型,范围在 -2147483648 to 2147483647。
CharField
-
字符类型,必须提供max_length参数, max_length表示字符长度
DateField
日期字段,日期格式 YYYY-MM-DD,相当于Python中的datetime.date()实例。
-
DateTimeField
-
日期时间字段,格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相当于Python中的datetime.datetime()实例
2.ORM字段参数
-
null
-
用于表示某个字段可以为空。
unique
如果设置为unique=True 则该字段在此表中必须是唯一的 。
-
db_index
-
如果db_index=True 则代表着为此字段设置索引。
default
为该字段设置默认值。
-
auto_now_add
-
配置auto_now_add=True,创建数据记录的时候会把当前时间添加到数据库。
auto_now
配置上auto_now=True,每次更新数据记录的时候会更新该字段。
3.关系字段参数
1)ForeignKey(外键)
-
to 设置要关联的表
-
to_field 设置要关联的表的字段(默认是id)
-
related_name 反向操作时,使用的字段名,用于代替原反向查询时的'表名_set'。
class Classes(models.Model):
name = models.CharField(max_length=32)
class Student(models.Model):
name = models.CharField(max_length=32)
theclass = models.ForeignKey(to="Classes")
-
on_delete(级联删除) 当删除关联表中的数据时,当前表与其关联的行的行为。
models.CASCADE
删除关联数据,与之关联也删除
models.DO_NOTHING
删除关联数据,引发错误IntegrityError
models.PROTECT
删除关联数据,引发错误ProtectedError
models.SET_NULL
删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空)
models.SET_DEFAULT
删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值)
models.SET
删除关联数据,
a. 与之关联的值设置为指定值,设置:models.SET(值)
b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)
def func():
return 10
class MyModel(models.Model):
user = models.ForeignKey(
to="User",
to_field="id",
on_delete=models.SET(func)
)
2)OneToOneField
to
设置要关联的表。
to_field
设置要关联的字段。
on_delete
同ForeignKey字段。
class Author(models.Model):
name = models.CharField(max_length=32)
info = models.OneToOneField(to='AuthorInfo')
class AuthorInfo(models.Model):
phone = models.CharField(max_length=11)
email = models.EmailField()
3)ManyToManyField
to
设置要关联的表