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

Django admin和使用on_delete=PROTECTED的单元测试之间的结果不一致

Django admin是Django框架中内置的一个功能强大的后台管理界面,它能够帮助开发者快速搭建和管理数据库模型。它提供了一套用户友好的界面,可用于对数据库模型进行增删改查操作,而无需编写大量的代码。

在Django中,模型之间的关联关系可以通过ForeignKey、OneToOneField、ManyToManyField等字段来实现。当涉及到删除一个拥有关联关系的对象时,需要设置on_delete参数来指定删除的行为。而在单元测试中,可以使用on_delete=PROTECTED选项来测试关联对象的删除行为。

然而,当在Django admin和使用on_delete=PROTECTED的单元测试中处理删除关联对象的情况时,结果可能会出现不一致的情况。这是因为Django admin的删除操作是经过一系列的验证和处理逻辑的,它可以处理相关联的对象,例如在删除父对象时,可以选择自动删除或设置为null或保护相关的子对象。而在单元测试中,使用on_delete=PROTECTED选项时,会抛出ProtectedError异常,以防止误删除关联对象。

这种不一致的结果是由于Django admin和单元测试在处理删除操作时的逻辑不同引起的。Django admin为了提供更好的用户体验和灵活性,提供了更多的选项来处理关联对象的删除行为,而单元测试则更注重于验证代码逻辑的正确性。

推荐的腾讯云相关产品是TencentDB for MySQL和腾讯云云服务器。TencentDB for MySQL是腾讯云提供的稳定可靠的云数据库产品,支持高性能、可扩展和高可用性的特性,可满足各类应用场景的需求。腾讯云云服务器是腾讯云提供的灵活可靠的云服务器产品,可根据实际需求选择合适的配置和规模,满足各种规模的应用部署需求。

关于TencentDB for MySQL的产品介绍和相关链接地址,请参考:

产品介绍:https://cloud.tencent.com/product/cdb 文档链接:https://cloud.tencent.com/document/product/236

关于腾讯云云服务器的产品介绍和相关链接地址,请参考:

产品介绍:https://cloud.tencent.com/product/cvm 文档链接:https://cloud.tencent.com/document/product/213

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

相关·内容

Djangoadmin使用源码剖析

admin组件使用 Django 提供了基于 web 管理工具。 Django 自动管理工具是 django.contrib 一部分。...django.contrib.messages', 'django.contrib.staticfiles', "app01" ] django.contrib是一套庞大功能集,它是Django...) class UserAdmin(admin.ModelAdmin): date_hierarchy = 'ctime' 8  inlines,详细页面,如果有其他表当前表做FK,那么详细页面可以进行动态增加删除...如果在程序运行期间,有很多地方都需要使用配置文件内容,也就是说,很多地方都需要创建 AppConfig 对象实例,这就导致系统中存在多个 AppConfig 实例对象,而这样会严重浪费内存资源,尤其是在配置文件内容很多情况下..._instance class MyClass(Singleton): a = 1 在上面的代码中,我们将类实例一个类变量 _instance 关联起来,如果 cls.

2.1K00

DjangoAutoField字段使用

Django Admin以及ModelForm中提供验证机制 11、FileField:存储文件类型数据,文件上传到指定目录 –参数:upload_to=”….”...20、TextField:存储文章内容信息数据,存储比较长文本信息 21、TimeField:存储时间信息 22、URLField:存储URL网址信息,Django Admin以及ModelForm...中提供验证url 23、IPAddressField:Django Admin以及ModelForm中提供验证IPV4机制 24、GenericIPAddressField:Django Admin以及...ModelForm中提供验证IPV4IPV6机制 二、常用关系型数据表处理Field 1、处理一对多关系数据表:使用ForeignKey 2、处理多对多关系数据表:使用ManyToManyField...”表名_set” 4、on_delete:当删除关联表中数据时,当前表与其关联行为,例如删除一个出版社,那么这个出版社有关联书籍也都被删除掉了,下面介绍on_delete参数值: on_delete

6.5K20

Django——模型Model

ORM简介 对象关系映射(Object Relation Mapping)实现了关系和数据库之间映射,隐藏了关系数据访问细节,不需要再编写SQL语句 创建模型 在models.py文件中创建类 继承...OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add......OK Django默认采用sqlite3数据库,最终会生成如下数据表,其中自定义表命名规则是(应用名称模型类名) DATABASES = { 'default...=models.DO_NOTHING) django 升级到2.0之后,表与表之间关联时候,必须要写on_delete参数,否则会报异常: TypeError: init() missing 1 required...positional argument: 'on_delete' on_delete参数各个值含义: on_delete=None, # 删除关联表中数据时,当前表与其关联

70550

使用Django实现把两个模型类数据聚合在一起

Django中想要把模型类聚合得到想要数据可以用F对象。 比如有模型类AB,AB之间有外键关联在一起,A是子表,B是父表(反过来没试过。。...这样操作结果就是可以查询到userid为3且模型类A字段bookid等于模型类B字段bid集合数据了。 F对象是可以比较两个关联模型类字段数据。...但是我用Django2.0时会报错。。真是搞不懂,后来我直接使用字段名居然可以,醉了。...使用DjangoTabularInline,可以解决这个问题,在父表里对子表进行编辑: 所有代码都在admin.py里写,具体如下: # 一对多关联表编辑,让父表管理配置页面能同时编辑子表,以下Score...以上这篇使用Django实现把两个模型类数据聚合在一起就是小编分享给大家全部内容了,希望能给大家一个参考。

1.4K20

DRF项目(一)创建rest下面,并且进行配置,建模,往数据库添加数据

,点击下面的链接就可以看 2 建模,在model里面创建实体类模型 3 admin.py里面进行注册 4 打开admin后台 配置上传图片路径 1 项目的创建 1 在pycharm创建django项目...什么也没有配置了,只是单纯创建一个django项目 ?...2 解决跨域问题看之前文章,点击下面的链接就可以看 django_rest 框架解决跨域问题 本项目里面我们要做是: 第一步:加跨域包 ? 第二部: ? 第三步: ?...这个就是导入一个装饰器,在每一个类上面写这个装饰器,将代码拿到python2下也是可以使用。...# 以下代码 就是前端就可以使用上传数据,比如图片 if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL,document_root

69610

Django 学习笔记 | 2、模型

0x00 模型 当前项目的开发, 都是数据驱动 使用Django进行数据库开发提示 : MVT设计模式中Model, 专门负责和数据库交互.对应(models.py) 由于Model中内嵌了ORM...框架, 所以不需要直接面向数据库编程 而是定义模型类, 通过模型类对象完成数据库表增删改查 ORM框架就是把数据库表行与相应对象建立关联, 互相转换.使得数据库操作面向对象 使用Django进行数据库开发步骤...) 发生这个错误原因是由于我看教程使用是1.8版本Django,而我安装是3.0,Django在2.0版本后,如果定义外键就需要加上on_delete选项了,OK,接下来,继续运行这两个代码。...使用django站点管理模块步骤: 管理界面本地化 创建管理员 注册模型类 自定义站点管理界面 1、管理界面本地化 将语言,时间设置为本地语言时间,大陆使用简体中文,时区使用亚洲/上海时区,修改settings.py...运行之后,在浏览器打开 http://127.0.0.1:8000/admin使用刚才创建用户名密码登陆。

61210

Django中基表创建、外键字段属性简介、脏数据概念、子序列化

Django中基表设置 通过图书管理系统引入多表操作:如果我们创建表方式是先抽象出表与表之间相同字段建一个父类,然后在用每个表类去继承这个父类,如下面的代码,我们将无法得到期望表字段。...假设图书管理系统中书、出版社、作者、作者详细信息四张表之间关系如下: """ 表关系 1)Book Publish 一对多:外键在多一方 Book 2)Book Author 多对多:外键在查询频率高一方...值,related_name默认值是表名小写 + _set,这就是为什么在Django中跨表反向查询时我们使用表名小写 + _set去查另一张表数据。...1.丢失修改:一个事物更新覆盖了另一个事物更新。例如:事物AB读入同一数据并修改,B提交结果破坏了A提交结果,导致A修改被丢失。...2.不可重复读:一个事物两次读取同一个数据,两次读取数据不一致。不可重复读是指事物A读取数据后,事物B执行更新操作,事务A 无法再现前一次读取结果

4.3K30

CRM客户关系管理系统(一) 第一章、CRM介绍开发流程第二章、CRM项目表结构设计

第一章、CRM介绍开发流程 1.1.CRM简介 客户关系管理(CRM)         客户关系管理(customer relationship management)定义是:企业为提高核心竞争力,...(3)业务场景分析(用户使用场景) 销售 销售A    刚从   百度推广   聊了一个客户,录入了CRM系统,咨询了python全栈开发课程,但是没报名 销售B    从 qq群聊了客户,且报名了python...期学习成绩排名 学员A   在线搜索一个问题,发现没有答案,于是提交了一个问题 讲师 登录了CRM,查看自己管理班级列表 进入了python9期,创建了第一节上课记录,填入了本节内容,作业需求...分配到了销售角色里 设置了销售可以操作权限  (4)原型图  产品经理画 (5)开发工具选型 开发工具 pycharm python django mysql jquery bootstrap linux...from django.contrib import admin from crm import models admin.site.register(models.Role) admin.site.register

4.4K12

django数据库迁移时候异常

django数据库迁移时候异常 一.错误信息 Django在根据models生成数据库表时报 init() missing 1 required positional argument: 'on_delete...' 二.原因 在django2.0后,定义外键一对一关系时候需要加on_delete选项,此参数为了避免两个表里数据不一致问题,不然会报错: TypeError: init() missing...1 required positional argument: 'on_delete' 三.解决方法 加上字段 举例 举例说明: user=models.OneToOneField(User) owner...)是默认值 参数说明: on_delete有CASCADE、PROTECT、SET_NULL、SET_DEFAULT、SET()五个可选择值 CASCADE:此值设置,是级联删除。...SET_DEFAULT:此值设置,会把设置为外键默认值。 SET():此值设置,会调用外面的值,可以是一个函数。 一般情况下使用CASCADE就可以了。

49320

Django开发在线教育平台--学习整理(一)

点击讲师详情页面–> 对讲师进行收藏分享,以及讲师全部课程。 导航栏: 授课机构有分页,排序筛选功能。 机构列表页右侧有快速提交我要学习表单。...4、null=Trueblank=True通常一起使用,null代表数据库可以为空,blank代表后台表单数据填写时可以留白。...2018-05-08.png 五、Admin后台管理系统 使用django自带Admin之前先创建一个超级管理员账户: E:\DjangoProjects\MxOnline2>python manage.py...然后,在每个app下admin.py中注册并定制admin后台模型: from django.contrib import admin from .models import Course, Lesson...2018-05-09 (1).png 修改课程详情页: 2018-05-09 (2).png 这里只是实现简单功能,djangoadmin功能非常强大,待后续完善。

2.9K90

django admin 给 字段 增加 HTML 样式(显示图片、设置字体颜色、超链接、按钮等)

django admin 后台样式默认情况下都是默认样式,有时候我们需要在 admin 显示一张图片、或者更改一个文案显示颜色等等,该怎办呢?...以下方法采用是在 model 里更改,也可以在 admin 里面更改。...原理:新增自定义字段,然后给该字段渲染时赋予 HTML 标签(标签有的属性都可以使用) 在 model.py 实现此效果 1. ...在 admin 里启用新增加字段 # admin.py from django.contrib import admin from apps.blog.models import * class.../zh-hans/2.2/ref/utils/#django.utils.html.format_html 在 admin.py 实现此效果 注意:不要跟该 model 里任何一个字段名相同 class

2.8K40

Django 学习笔记之模型高级用法(上)

Django 规定 allow_files allow_folders 两者之间必须有一个值为 True。 1.5 FileField 上传文件字段,常见于表单中。...2.1 ForeignKey 1) on_deleteDjango 2.0 中,设置外键时需要添加一个 on_delete选项。外键本身涉及到两个表数据,况且外键在数据库中是有约束行为。...所以 on_delete 参数是 Django 模拟 SQL 约束行为。 on_delete 有几个可选值: CASCADE:这就是默认选项,级联删除,你无需显性指定它。...2)limit_choices_to 该参数用于限制外键所能关联对象,只能用于 Django ModelForm(Django表单模块) admin 后台,对其它场合无限制功能。...如果用户没有定义该选项, Django会自动将自动创建,内容是该字段属性名中下划线转换为空格结果

2K30

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

两个参数不能默认设置同时设置 DateTimeField DateTimeInput 日期时间,在 Python 中使用 datetime.datetime 实例表示。...有两个必须参数: max_digits decimal_places 。 DurationField TextInput 存储时间跨度,在 Python 中使用 timedelta 表示。...ImageField ClearableFileInput 所有属性方法都继承自 FileField ,此外验证上传对象是不是有效图像。增加了 height width 两个属性。...=None,# 反向操作时,使用连接前缀,用于替换【表名】 limit_choices_to=None, # 在Admin或ModelForm中显示关联数据时,提供条件,字典类型...# 默认创建第三张表时,数据库中表名称 3.一对一 一对一其实就是 一对多 + 唯一索引,当两个类之间有继承关系时,默认会创建一个一对一字段,一对一使用OneToOneField来实现,如下: from

2.1K00

Django】 开发:数据库操作和后台管理

, Avg, Count, Max, Min 语法: MyModel.objects.aggregate (结果变量名 = 聚合函数 (‘列’)) 返回结果: 由 结果变量名值组成字典 格式为: `...django.db.connection 包中,使用前需要先导入 如: from django.db import connection 用创建 cursor 类构造函数创建 cursor 对象,再使用...,可供开发过程中调用测试使用 django 会搜集所有已注册模型类,为这些模型类提拱数据管理界面,供开发者使用 使用步骤: 建后台管理帐号: 后台管理–创建管理员帐号 $ python3 manage.py...说明: 后台管理器类须继承自 django.contrib.admin ModelAdmin 类 模型管理器使用方法: 在 /admin.py 里定义模型管理器类 class XXXXManager...绑定注册模型管理器模型类 from django.contrib import admin from .models import * admin.site.register(YYYY, XXXXManager

4K40
领券