on_delete与db_constraint数据模型怎么在django中使用

  介绍

on_delete与db_constraint数据模型怎么在django中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<强> 1。设置为空

class  BookModel (models.Model):   “才能”;“   图才能书   “才能”;“   book_name 才能=,models.CharField (max_length=100,, verbose_name=& # 39;书名& # 39;)   #才能,表示外键关联到作者表,当作者表删除了该条数据,图书表中不删除,仅仅是把外键置空   author 才能=,models.ForeignKey (AuthModel, null=True,,空白=True, on_delete=models.SET_NULL)   price 才能=,models.FloatField (verbose_name=& # 39;价格& # 39;)   create_time 才能=,models.DateTimeField (auto_now_add=True, verbose_name=& # 39;添加时间& # 39;)

<强> 2。建表时其他参数的设置

级联:这就是默认的选项,级联删除,你无需显性指定它。
保护:保护模式,如果采用该选项,删除的时候,会抛出ProtectedError错误。
SET_NULL:置空模式,删除的时候,外键字段被设置为空,前提就是空白=True, null=True,定义该字段的时候,允许为空。
SET_DEFAULT:置默认值,删除的时候,外键字段设置为默认值,所以定义外键的时候注意加上一个默认值。
设置():自定义一个值,该值当然只能是对应的实体了

<强> 3。设置的使用

def  get_sentinel_user ():   return 才能;get_user_model () .objects.get_or_create(用户名=& # 39;删除# 39;)[0]      class  MyModel (models.Model):   时间=user 才能;models.ForeignKey (   ,,,settings.AUTH_USER_MODEL,   ,,,on_delete=models.SET (get_sentinel_user),   )才能

<强> 4.多参数(通过,db_constraint)

class 书(models.Model):   name=models.CharField才能(max_length=20)   作者才能=models.ManyToMany(& # 39;作者# 39;通过=& # 39;分数# 39;)         class 作者(models.Model):   name=models.CharField才能(max_length=20)         class 分数(models.Model):   书才能=models.ForeignKey(& # 39;书# 39;)   作者才能=models.ForeignKey(& # 39;作者# 39;)   socre才能=models.IntegerField ()

如果只写多,那么第三张是Django替我们建的,可以通过book.authors字段进行一系列操作(添加(增)、(查),所有设置(重置),删除(删除)),但是此时没法给第三张表加其他我们需要的字段,

而如果不写,多字段,那么我们可以通过分数来执行一些操作,但是此时书和作者表已经没有直接的联系了,查询起来很繁琐

有了作者=models.ManyToMany(& # 39;作者# 39;通过=& # 39;分数# 39;),那么就既可以方便查,也方便业务,添加需要的字段

<强> 5. db_constraint

db_constraint=False,这个就是保留跨表查询的便利(双下划线跨表查询“的”),但是不用约束字段了,一般公司都用假,这样就省的报错,因为没有了约束(字段字段对象,既约束,又建立表与表之间的关系)

limit_choices_to
限制关联字段的对象范围

related_name
反向查询字段可以不用表名小写,可以改名了

db_table
第三张表的名字

模型。ForeignKey (AuthModel null=True,空白=True, on_delete=models.SET_NULL db_constraint=False)

关于on_delete与db_constraint数据模型怎么在django中使用问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

on_delete与db_constraint数据模型怎么在django中使用