首页
学习
活动
专区
工具
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 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): # 删除评论人或者父评论的时候同时删除评论

98320
  • 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

    78320

    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.2K20

    【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,则调用它的结果。

    2K10

    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级联关系。有空再研究。

    1.1K30

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

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

    58240

    使用 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...注册之后可以将自己的电话号码设置为测试账号,仅可以向自己的手机号发短信,测试成功的页面如下: ? 使用的是官方提供的接口,在项目文件中将自己的密钥信息填进去就能用: ?

    6K40

    【云+社区年度正文】Django从入门到精通No.2----模型

    注:数据参考来源w3cschool 上面的字段很容易让人想起数据库中的数据类型,所以这些字段也就会有约束,常用的约束如下: null:字段是否可以为空 blank:是否允许用户输入为空 db_column...1.多对一 因为是关联关系,所以我们必须指定两个类来进行相互操作,这里涉及到一个外键的操作,即ForeignKey字段,而且外键要定义在多的一方。...IntegrityError - models.PROTECT,删除关联数据,引发错误ProtectedError - models.SET_NULL...与之关联的值设置为指定值,设置:models.SET(值) 2....与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象) related_name=None # 反向操作时,使用的字段名,用于代替表名_set related_query_name

    2.1K00

    Django 2.x实战(02) - 深入模型

    import pymysql pymysql.install_as_MySQLdb() 运行manage.py并指定migrate参数实现数据库迁移,为应用程序创建对应的数据表,当然在此之前需要先启动...', verbose_name='员工姓名') job = models.CharField(max_length=10, verbose_name='职位') # 自参照完整性多对一外键关联...mgr = models.ForeignKey('self', on_delete=models.SET_NULL, null=True, blank=True, verbose_name='...其中IntegerField对应数据库中的integer类型,CharField对应数据库的varchar类型,DecimalField对应数据库的decimal类型,ForeignKey用来建立多对一外键关联...字段属性primary_key用于设置主键,max_length用来设置字段的最大长度,db_column用来设置数据库中与字段对应的列,verbose_name则设置了Django后台管理系统中该字段显示的名称

    45730

    Django之ORM字段和参数

    外键类型在ORM中用来表示外键关联关系,一般把ForeignKey字段设置在 '一对多'中'多'的一方。    ...(null=False,null=True) ---- unique    设置唯一。如果设置为unique=True 则该字段在此表中必须是唯一的 。 ---- db_index    设置索引。...删除关联数据,与之关联也删除 models.DO_NOTHING 删除关联数据,引发错误IntegrityError models.PROTECT 删除关联数据,引发错误ProtectedError models.SET_NULL... 删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空) models.SET_DEFAULT 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值) models.SET...   是否在数据库中创建外键约束,默认为True。

    2.3K60
    领券