Python - Django - ORM 常用的字段属性

字段参数:

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)

 

posted @ 2019-08-01 20:53  Sch01aR#  阅读(345)  评论(0编辑  收藏  举报