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

添加帖子作者时的django on_delete

在Django中,当我们在模型中定义了外键字段,并且需要处理被关联对象删除时的行为时,可以使用on_delete参数来指定。on_delete参数决定了删除被关联对象时,对应的外键字段应该如何处理。

on_delete参数有以下几种选项:

  1. CASCADE:级联删除。当被关联的对象被删除时,同时删除包含该外键字段的对象。使用CASCADE选项时需要注意避免出现循环删除的情况。
  2. PROTECT:保护模式。当被关联的对象被删除时,抛出ProtectedError异常,阻止删除操作。
  3. SET_NULL:设置为空。当被关联的对象被删除时,将外键字段设为NULL。需要注意外键字段定义时需要设置null=True
  4. SET_DEFAULT:设置为默认值。当被关联的对象被删除时,将外键字段设为默认值。需要注意外键字段定义时需要设置default参数。
  5. SET():设置为给定值。当被关联的对象被删除时,将外键字段设为给定的值,可以是一个常量或一个可调用对象的返回值。
  6. DO_NOTHING:不做任何操作。当被关联的对象被删除时,什么也不做。需要谨慎使用,可能导致数据不一致性。

下面是一个示例,演示了如何使用on_delete参数:

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

class Post(models.Model):
    author = models.ForeignKey('Author', on_delete=models.SET_NULL, null=True)
    # 其他字段...

class Author(models.Model):
    name = models.CharField(max_length=100)
    # 其他字段...

在上面的示例中,我们定义了一个Post模型,其中包含了一个外键字段author,指向了Author模型。在Post模型的外键字段定义中,我们使用了on_delete=models.SET_NULL,表示当Author对象被删除时,将author字段设为NULL。这样可以避免在删除Author对象时引发数据库完整性错误。

推荐的腾讯云相关产品:由于题目要求不能提及亚马逊AWS、Azure、阿里云、华为云、天翼云、GoDaddy、Namecheap、Google等流行的云计算品牌商,所以无法给出腾讯云的相关产品和链接地址。但腾讯云也提供了丰富的云计算服务,你可以在腾讯云官网上查找相关信息。

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

相关·内容

Django数据模型中关于on_delete的使用

1、常见的使用方式(设置为null) 2、关于别的属性的介绍 CASCADE:这就是默认的选项,级联删除,你无需显性指定它。...SET_NULL: 置空模式,删除的时候,外键字段被设置为空,前提就是blank=True, null=True,定义该字段的时候,允许为空。...SET_DEFAULT: 置默认值,删除的时候,外键字段设置为默认值,所以定义外键的时候注意加上一个默认值。...SET(): 自定义一个值,该值当然只能是对应的实体了 3、补充说明:关于SET()的使用 **官方案例** def get_sentinel_user():     return get_user_model...class MyModel(models.Model):     user = models.ForeignKey(         settings.AUTH_USER_MODEL,         on_delete

1.2K10
  • Django实战篇-论坛模型层

    如果是在虚拟机中创建项目,切换到对应的虚拟环境,再执行 django-admin.py startproject my_project(项目名)。...框架篇-Django博客应用-创建项目 安装项目需要的第三方库;进入项目虚拟环境,pip install 模块名/包名 Django 框架 widget-tweaks 用于 BootStrop 表单渲染...版块由管理员创建 话题由平台用户发起 帖子用作平台用户交流 ① 论坛版块 Board 每个版块就像一个分类,在指定的版块里面,用户可以通过创建新话题 Topic 讨论,其它用户参与讨论回复。...# 关联的用户 starter = models.ForeignKey(User, related_name="topics", on_delete=models.SET_NULL, null=...# 外键关联 下一级的数据表绑定上一级 class Post(models.Model): # 回复的帖子 message = models.TextField(max_length=

    60120

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

    规避方法 把项目中所有模型中有外键的字段都添加这个属性,添加的时候需要根据实际情况设定值。...= models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='作者', on_delete=models.PROTECT) # 当删除有文章的作者时引发错误...category = models.ForeignKey(Category, verbose_name='文章分类', on_delete=models.PROTECT) # 当删除有文章的分类时引发错误...报错分析,这个是 django 2.x 里面会出现的问题,当 urls.py 里面使用 include 的时候,当有 namespace 参数的时候,第一个参数需要添加成元组,其中第二个参数是 app_name...migrate 报错 由于 django 2.2+ 的 auth 应用中的数据库迁移文件比 1.11+ 的版本多了几个,所以按理需要把这几个迁移文件添加到数据库中,但是由于我添加了 oauth 应用,这个应用必须依赖

    98320

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

    场景 我们用Django的Model时,有时候需要关联外键。关联外键时,参数:on_delete的几个配置选项到底是干嘛的呢,你知道吗? 参数介绍 models.CASCADE 级联删除。...Django会模拟SQL约束的行为,在删除此条数据时,同事删除外键关联的对象。...比如:用户的有一个外键关联的是用户的健康记录表,当用户删除时,配置了这个参数的健康记录表中跟这个用户有关的数据也会被删除。...如果后端数据库有强制关联操作,这是容易报错:IntegrityError,除非你在数据库中手动添加了SQL的ON DELETE约束。...欢迎查看我的这个系列的其他文章: django-admin和manage.py的用法[1] 编写自定义manage.py 命令[2] Django组件——forms组件[3] 还有更多内容,请查看Bigyoung

    2K10

    【Django | 爬虫 】收集某吧评论集成舆情监控(附源码)

    ‍♂️ 个人主页: @计算机魔术师 ‍ 作者简介:CSDN内容合伙人,全栈领域优质创作者。...多对一外键 → 帖子 """ baidu_user = models.OneToOneField(Baidu_User, on_delete=models.CASCADE, related_name...url 4.5 执行结果查看 在admin 里面查看也较为方便, 对 admin 进行了相应的封装方便过滤啥的, 以及状态清晰 django_apscheduler_djangojob 表保存注册的任务以及下次执行的时间...django_apscheduler_djangojobexecution 保存每次任务执行的时间和结果和任务状态 这里注意 missed 则是表示撞车的场景, 为避免这种场景需要在 周期的长度以及是否进行强制结束进行选择...) django定时任务没有运行 原因:创建了一个app,但是没有运行,这是因为这个app的view只有一个函数,没有连接在django进程,没有经过该view, 解决方式: 在任意django进程中添加

    1.2K30

    Django从1.8升级到2.0注意事项 转

    其间几个重要的变更技术点节录如下(以更改过程为主,不区别django还是python变更,且django中的变化也不一样是2.0中才开始具有的): ?...1, print Python3中,print从语句变为函数,所以所有的print语句需要改成print() 2,on_delete 在django 2中,models中on_delete=models.XXX...不再是默认选项,需要显性指定 # 表示外键关联到作者表,当作者表删除了该条数据,图书表中不删除,仅仅是把外键置空 author = models.ForeignKey(AuthModel, null...=True, blank=True, on_delete=models.SET_NULL) 3, reverse 在新版本django中,这些包不再归于core,而是属于django.urls包,需要更改...注意python3里decode和encode的使用 11,html输出时,byte如何转换成unicode?

    92710

    Django ORM 多表操作

    目录 Django ORM 多表操作 表模型 表关系 创建模型 逆向到表模型 插入数据 ORM 添加数据(添加外键) 一对多(外键 ForeignKey) 一对一 (OneToOneFeild) 多对多...ORM 多表操作 表模型 图书表 出版社表 作者表 作者详情表 表关系 一对一:一对一推荐建在查询频率高的一方 一对多:外键字段建在多的一方 多对多:外键字段建在查询频率多的一方,在Django第三张表不需要创建...,自动创建 ps:外键字段不需要写表名_id后面的_id,ORM创建的时候自动添加了_id,以及外键以虚拟字段的形式存在 创建模型 '''models.py''' from django.db import...2、Django1.1 版本不需要联级删除:on_delete=models.CASCADE,Django2.2 需要。...6、若有模型类存在外键,创建数据时,要先创建外键关联的模型类的数据,不然创建包含外键的模型类的数据时,外键的关联模型类的数据会找不到 逆向到表模型 插入数据 ps:插入几条数据方便操作 ORM

    1.8K20

    为vim编辑器添加默认的作者信息

    上周五Derek老师分享了精彩的Vim思维导图(回复公众号vim即可查看哦),今天又带来什么呢?继续往下看吧! 很多程序员都想给自己的程序添加一些作者信息之类的信息,那么我们应该怎么实现这个要求呐?...只需要在VIM编辑器中添加以下代码即可!...#为F4添加作者信息 map ms:call TitleDet()'s function AddTitle() call append(0,"#################...Successful in updating the copy right." | echohl None endfunction #判断如果前10行中如果有Last modified:字段 #如果没有的话,则代表没有添加过作者的信息等条件...,则重新添加 #如果有的话,那么只更新修改时间和文件名 function TitleDet() let n=1 while n < 10 let line = getline

    63350

    第15篇-使用Django进行ElasticSearch的简单方法

    不要忘记添加 elasticsearchapp 到 INSTALLED_APPS 中 settings.py 和注册新的博文模型 admin.py 是这样的: from django.contrib import...现在,您应该可以在那里看到您的Blog帖子模型。继续并在管理员中创建您的第一篇博客文章。 恭喜,您现在有了一个可正常运行的Django项目!终于是时候玩有趣的东西了–连接ElasticSearch。...索引新保存的实例 接下来,您需要添加一个信号,以 .indexing() 在用户每次保存新博客帖子时保存的每个新实例上触发。...'现在,该 post_save 信号已在Django中注册,并且随时可以在保存新博客文章时收听。...简单搜索 现在让我们做一个简单的搜索功能 search.py 来查找按作者过滤的所有帖子: 从 elasticsearch_dsl 导入 DocType,文本,日期,搜索 ...... def search

    5.3K00

    Django(15)外键和表关系

    大家好,又见面了,我是你们的朋友全栈君。 外键删除操作 如果一个模型使用了外键。那么在对方那个模型被删掉后,该进行什么样的操作。可以通过on_delete来指定。...以下将讨论一下三种关系的应用场景及其实现方式。 一对多 应用场景:比如文章和作者之间的关系。一个文章只能由一个作者编写,但是一个作者可以写多篇文章。...文章和作者之间的关系就是典型的多对一的关系 实现方式:一对多,都是通过ForeignKey来实现的。...实现方式:Django为这种多对多的实现提供了专门的Field。叫做ManyToManyField。还是拿文章和标签为例进行讲解。...在我们使用多对多反向引用添加的时候,只能使用add这种添加方式,比如向文章中添加标签,示例代码如下: article = Article.objects.first() tag = Tag(name="

    2.1K40
    领券