首页
学习
活动
专区
工具
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=

    59220

    django创建超级用户指定添加其它字段方式

    使用 python manage.py createsuperuser创建超级用户只能默认输入:用户名,邮箱,及密码来创建 有的时候我们需要创建时候指定额外字段,可以通过下面的方法 使用 python...可以通过关键字参数来指定需要添加额外参数 补充知识:dajngo创建超级用户 createsuper 报错auth_user’ doesn’t exist 修改 DATABASES = { 'default...': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'car', 'USER': 'root', 'PASSWORD': 'root', 'HOST...init_command": "SET foreign_key_checks = 0;", }, 然后删除数据库 重新运行一遍 python manage.py createsuperuser 以上这篇django...创建超级用户指定添加其它字段方式就是小编分享给大家全部内容了,希望能给大家一个参考。

    1.3K20

    Django添加bootstrap框架无法加载静态文件解决方式

    开始在setting.py中设置如下; ? html文件中写法如下: ? 这样设置一直无法加载静态文件,只需要修改setting.py文件如下: ? 就可以加载到静态文件了。...补充知识:Django-项目上线后,静态文件配置失效以及404、500页面的全局配置 一.项目上线后静态文件失效 1.因为项目还没上线时候,django会默认从setting.py中这个设置 STATIC_URL...=False,生产环境配置需设置好才有效) 2.项目下总urls.py(不是appurls.py)中,urlpatterns下面添加: from XMJonline.settings import...= render_to_response('500.html',{}) response.status_code = 500 return response 4.项目的templates文件夹添加自己想要...7.成功跳转到自己配置500页面。 以上这篇Django添加bootstrap框架无法加载静态文件解决方式就是小编分享给大家全部内容了,希望能给大家一个参考。

    2.4K20

    博客将 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 应用,这个应用必须依赖

    94920

    用pythonDjango框架来做一个简单web应用(三)

    一个项目中有多个app,这些app有相同url,怎么区分? 在urls.py 中添加app_name='app_name'#app名称。通过app_name加以区分。...Django1.9之后版本中,外键ForeignKey()中on_delete参数是必须。 4....添加富文本编辑器后,若在Django后台页面编辑使用了回车,在页面中会出现<p标签,此时需要在模板中使用了富文本文字前后加上:{% autoescape off %}..........{% endautoescape...7.Django中外键ForeignKey三种用法: Author=models.ForeignKey(User,on_delete=models.DO_NOTHING,verbose_name='作者...Article=models.ForeignKey(Article,on_delete=models.CASADE,verbose_name='文章')。当文章删除,响应外键链接也删除。

    42410

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

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

    1.9K10

    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,但是没有运行,这是因为这个appview只有一个函数,没有连接在django进程,没有经过该view, 解决方式: 在任意django进程中添加

    1.1K30

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

    其间几个重要变更技术点节录如下(以更改过程为主,不区别django还是python变更,且django变化也不一样是2.0中才开始具有的): ?...1, print Python3中,print从语句变为函数,所以所有的print语句需要改成print() 2,on_deletedjango 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?

    91010

    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

    60650

    Django分组聚合查询实例分享

    ) book.author 增:book.author.add(作者对象们|主键们) 删: clear()清除 remove() 可删除单个作者 改: set([作者对象们|主键们]) 2....ForeignKey(): 外键字段 to= 关联模型类 (一对多) to_file = 关联字段,省略默认关联主键 on_delete (外键关联数据被删除操作) models.CASCADE...使用(一对多,一对一) # 一对多查询 —-(publish and book) # 方式一 : 不使用外键,在book 中添加 publish_id 属性 # 不在支持Django ORM 链表查询语法...Django ORMlianiao 查询语法 # 当新表中无需新加额外字段, 可以自动创建 class MyBook(models.Model): name = models.CharField...,更多相关Django分组聚合查询内容请搜索ZaLou.Cn以前文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn!

    1.8K10
    领券