首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Django中将外键设置为<null> (没有on_delete=models.SET_NULL)

在Django中,如果想将外键设置为null而不使用on_delete=models.SET_NULL选项,可以通过在外键字段上添加null=True选项来实现。

具体步骤如下:

  1. 打开Django项目中的相关模型文件(通常是models.py)。
  2. 找到需要设置为null的外键字段所在的模型类。
  3. 在该外键字段的定义中添加null=True选项。

以下是一个示例:

代码语言:txt
复制
from django.db import models

class MyModel(models.Model):
    my_foreign_key = models.ForeignKey(OtherModel, null=True)

在上述示例中,MyModel模型类中的my_foreign_key字段被设置为外键,并且通过null=True选项将其设置为可为空。

需要注意的是,如果不使用on_delete选项,当关联的对象被删除时,外键字段将保持为null,而不会自动设置为其他值或引发错误。因此,在使用这种设置时,需要特别注意处理外键字段为空的情况。

推荐的腾讯云相关产品:腾讯云数据库MySQL、腾讯云云服务器CVM。

腾讯云数据库MySQL产品介绍链接地址:https://cloud.tencent.com/product/cdb

腾讯云云服务器CVM产品介绍链接地址:https://cloud.tencent.com/product/cvm

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django ForeignKey与数据库的FOREIGN KEY约束详解

数据库在高并发的场景下使用约束会有锁问题并且使用会增加运维成本,所以很多公司都规定生产环境的数据库禁止使用。...那么不使用约束的情况下使用 Django ORM 如何实现关联查询两个表呢?这曾是困扰我很久的一个问题,今天终于找到了答案,写出来分享一下。...=True, on_delete=models.SET_NULL, related_name='cities', db_constraint=False) def...参数默认为 on_delete=models.CASCADE,表示使用数据库的级联删除,使用 on_delete=models.SET_NULL 可以使删除 Province 时将关联的 City 表对应的...前提在模型中设置了auto_now=True时间戳属性,为了方便数据库自动更新时间,而 使用update更新的记录,数据库中并没有自动更新,达到我的需求。

2.5K10

博客将 Django 1.11+ 升级到 Django 2.2+ 遇到的问题及规避方法

' 报错的原因其实一看就能知道,这个地方是说的关于一些模型在一对一关联和一对多关联()的时候需要指定 on_delete 参数才行,多对多没有这个设置。...规避方法 把项目中所有模型中有的字段都添加这个属性,添加的时候需要根据实际情况设定值。...,什么也不做 on_delete=models.PROTECT, # 删除关联数据,引发错误ProtectedError on_delete=models.SET_NULL, # 删除关联数据...,与之关联的值设置null(前提该字段需要设置可空,一对一同理) on_delete=models.SET_DEFAULT, # 删除关联数据,与之关联的值设置默认值(前提FK字段需要设置默认值,...=True, on_delete=models.SET_NULL) # 当工具分类删除后把分类设置空 # class Comment(models.Model): # 删除评论人或者父评论的时候同时删除评论

92620

django模型中有关系的表删除相关设置

0904自我总结 django模型中有关系的表删除相关设置 一.一对一 例如有Author、AuthorDetail两表 author = models.OneToOneField(to='Author...=models.DO_NOTHING, ) 1)关系字段放在Book表中(多的一方):出版社删除书不动,书删除没有任何影响 2)出版社找书用 related_name...1)断关联,删除关联表记录,键值置空 db_constraint=False, on_delete=models.SET_NULL, null=True, 2)断关联,删除关联表记录,键值置默认值...db_constraint=False, on_delete=models.SET_DEFAULT, default=1, 注意:on_delete必须声明models.DO_NOTHING删除级联关系...,反向找 字段related_name 3)db_constraint断开表关联,on_delete不存在(不设置,本质在第三张表中设置,且一定是级联)

3K20

Python Django开发 异常及其解决办法(一)

5.Django makemigrations报错Field specifies on_delete=SET_NULL, but cannot be null 在进行Django开发时,定义完数据模型后要进行数据映射...这可能是因为所定义的某个模型定义了,而在新版的Django中外必须指定on_delete属性,例如user = models.ForeignKey(User, verbose_name='用户',...on_delete=models.SET_NULL)此时是因为该属性指定为models.SET_NULL,即在父模型删除数据后,对应的子模型记录字段设为空,但是在定义该字段时并未允许该字段空,因此解决方法有两种...: 字段增加null属性真 即字段定义user = models.ForeignKey(User, verbose_name='用户', null=True, on_delete=models.SET_NULL...修改on_delete属性 修改该属性其他值,models.CASCADE、models.SET_DEFAULT等。

3.1K20

Django官方文档小结(一) -- Models模型

,引发错误ProtectedError # models.ForeignKey('关联表', on_delete=models.SET_NULL, blank=True, null=True) on_delete...=models.SET_NULL, # 删除关联数据,与之关联的值设置null(前提FK字段需要设置可空,一对一同理) # models.ForeignKey('关联表', on_delete...=models.SET_DEFAULT, default='默认值') on_delete=models.SET_DEFAULT, # 删除关联数据,与之关联的值设置默认值(前提FK字段需要设置默认值...与之关联的值设置指定值,设置:models.SET(值) b....与之关联的值设置可执行对象的返回值,设置:models.SET(可执行对象) #2.4 数据库表示 在生成数据库时,Django追加"_id"字段名称来创建其数据库列名,可以通过指定显式更改此内容db_column

75920

Django 2.2文档系列】Model 中的on_delete参数用法

场景 我们用Django的Model时,有时候需要关联。关联时,参数:on_delete的几个配置选项到底是干嘛的呢,你知道吗? 参数介绍 models.CASCADE 级联删除。...Django会模拟SQL约束的行为,在删除此条数据时,同事删除外关联的对象。...比如:用户的有一个关联的是用户的健康记录表,当用户删除时,配置了这个参数的健康记录表中跟这个用户有关的数据也会被删除。...models.SET_NULL 设置关联的内容null。只有设置null=True时可用。当数据被删除时,被关联的内容被设置null。...models.SET_DEFAULT 将的值设置默认值。必须设置有默认值 。 models.SET()将SET()设置的值作为的值 ,如果传递了callable,则调用它的结果。

1.9K10

Django model,baseModel基类, migrate移行

复数名称用:verbose_name_plural管理画面标示的名称是这样的,默认加s图片4. default_related_name在外设置反向查询的字段名。...=models.SET_NULL, verbose_name='商品', null=True) class Meta: verbose_name = '受注詳細' db_table...补充:on_delete在外中必须设置,表示级联关系。 级联关系:例,主表数据删除后,参照表的键值,如何处理。  限制 insert参照表的数据之前,主表必须先登录数据,以避免脏数据产生等。...假设A表依赖B表,B记录删除,A表的字段重置default属性设置的值。SET_NULL:配合NULL=True使用。...假设A表依赖B表,B记录删除,A表的字段重置NULL, 例:product被删,order的product,重置NULL注:多对多字段不能设置on_delete级联关系。有空再研究。

1K30

Django——图书管理系统(六)

本文将讲述设置操作,关于的更多知识,大家可以看看数据库的知识。当然我依旧会在注释中做出一些解释。 现在我们已经有了出版社这张表,现在我们添加书籍这张表。...由于出版社和书籍之间是有关系的,我们使用来连接两者之间的关系。...=models.CASCADE) # 默认关联的是Publisher表的主键。...第二个参数on_deleteDjango2.0之后必须填写,models.CASCADE表示级联删除。级联删除意味着,我删除了某个出版社,那么该出版社对应的所有书籍也被删除。...models.SET_DEFAULT:表示删除后设为默认值 models.SET_NULL:删除后设为空值 models.SET(x):删除后设为某个值 ''' 增加一张表之后,

54140

Django中的AutoField字段使用

三、字段参数 1、null:用于表示某个字段可以为空 2、unique:如果设置unique=True则该字段在此表中必须是唯一的 3、db_index:如果db_index=True则代表这为此字段设置索引...4、default:该字段设置默认值 四、关系字段 1、to:设置要关联的表 2、to_field:设置要关联的表的字段 3、related_name:反向操作时,使用的字段名,用于代替原反向查询时的...:删除关联数据,引发错误ProtectedError on_delete=models.SET_NULL:删除关联数据,与之关联的值设置null(前提FK字段需要设置可空) on_delete=models.SET_DEFAULT...:删除关联数据,与之关联的值设置默认值(前提FK字段需要设置默认值) on_delete=models.SET:删除关联数据: a、与之关联的值设置指定值,设置:models.SET(值) b、与之关联的值设置可执行对象的返回值...,设置:models.SET(可执行对象) 5、db_constraint:是否在数据库中创建约束,默认为True,db_constraint一般使用在建立数据表连接关系当中(例如创建),如果使用

6.4K20

django自定义非主键自增字段类型详解(auto increment field)

,这个字段可以是主键,也可以不是主键,如果不是主键,则必须设置一种“(key)” # (primary key)也是(key)的一种,key还包括(foreign key)、唯一(unique...,与之关联也删除 - models.DO_NOTHING,删除关联数据,引发错误IntegrityError - models.PROTECT,删除关联数据,引发错误ProtectedError - models.SET_NULL...,删除关联数据,与之关联的值设置null(前提FK字段需要设置可空) - models.SET_DEFAULT,删除关联数据,与之关联的值设置默认值(前提FK字段需要设置默认值) - models.SET...与之关联的值设置指定值,设置:models.SET(值) b....(max_length=64) db_constraint=True, # 是否在数据库中创建约束 db_table=None, # 默认创建第三张表时,数据库中表的名称 ForeignKey

2.2K10

使用 Django + Vue.js 开发个人博客网站(完整版附源码)—— Python-课程设计-期末项目

对应的 物理模型 : ? 在物理模型中,由于存在一对多的关系,所以文章表和评论表中加上了两个 约束 。...models.DateTimeField(default=timezone.now) 文章实体类: class Article(models.Model): """ 文章实体类 """ # 约束...以日期创建文件夹区分, 可以为空 avatar = models.ImageField(upload_to='article/%Y%m%d/', blank=True) # 文章栏目是 "一对多" ...=models.SET_NULL, null=True) # 发表评论的用户 user = models.ForeignKey('users.User', on_delete=models.SET_NULL...注册之后可以将自己的电话号码设置测试账号,仅可以向自己的手机号发短信,测试成功的页面如下: ? 使用的是官方提供的接口,在项目文件中将自己的密钥信息填进去就能用: ?

5.3K30
领券