热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Django数据库操作易错点

Django数据库操作易错点1.在view中增删改查数据库遇到主键的数据修改,会新建一条数据而不是修改,例如:try:idCodeIn
Django数据库操作易错点

1. 在view中增删改查数据库

遇到主键的数据修改,会新建一条数据而不是修改,例如:

try:id = CodeInfo.objects.get(goods_code=old_id).update(goods_code=new_id,)id.goods_code=new_idid.uni_code=new_uni_idid.save()messages.success(request,"修改成功")except:messages.error(request,"编号不存在")# 数据表中goods_code是主键

不能取出数据然后修改主键值再save()
save的时候因为主键已改变,orm无法找到表中对应行,所以直接就create了
应该直接用.update()

修改为:

try:id = CodeInfo.objects.filter(goods_code=old_id).update(goods_code=new_id,uni_code=new_uni_id)messages.success(request,"修改成功")except:messages.error(request,"编号不存在")

问题解决!

2. 在跳转页面时 message显示

在views.py中操作

messages默认有几种类型,比如success,info,error,warning等,当然你也可以自定义一种类型。messages有两种添加方式,你可以在任何你想要显示消息提示的地方使用下面两种方法的任意一种.就是这么简单~

\# method #1messages.success(request,'Hello world.')messages.error(request,'I am wrong')\# method #2messages.add_message(request,messages.SUCCESS, 'Hello world.')

3. 1451 - Cannot delete or update a parent row: a foreign key constraint fails 问题的解决办法

MySQL库中有俩表,table1和table2,相互关联,在删除表的时候出错:

Cannot delete or update a parent row: a foreign key constraint fails。

很明显这是表关联生成的强制约束问题,在删除的时候回检查表之间的关联关系,从而导致无法删除。

解决办法:

SET foreign_key_checks = 0; // 先设置外键约束检查关闭drop table table1; // 删除表,如果要删除视图,也是如此SET foreign_key_checks = 1; // 开启外键约束检查,以保持表结构完整性

MySQL的环境变量中存在一个foreign_key_checks,这是默认检查外键的配置项,如果将其设置为0,
BUT

在Django中怎么操作还没找到,欢迎指导

4. 本地Django css修改后html没有变化

css被浏览器缓存了,清理一下浏览器缓存就可以了

5. Cannot assign A.id must be a B instance.类似的错误

参考自:https://www.cnblogs.com/Stitchez/p/9911581.html

意为无法分配给“3”这个uid号,“OrderList.uid”必须是一个“User”的实例,即“OrderList.uid”不能为“3”

在通过数据库sql语句上,我们习惯性insert into orderlist(uid) value(“3”)是可以正常增加数据的。

但是在通过Django操作数据库时,不需要写sql语句,通过模型操作数据库:

img

传值无法成功,其原因是因为orderlist表中的uid关联User表中的uid(主键),通过Django进行增操作时,Orderlist.uid需要一个User的实例(外键约束),将orderlist字典改成如下:img

即可成功进行增操作。

类似的:

其他使用Django模型对数据库操作时,如有依赖关系,则参数的值也需要为一个对象,或查询到的外键是一个对象,例:

img

如果通过bid=o.bid用过滤查找 book表下bid的书名将会报错:

img

我们打印一下 o.bid:

img

结果为:

img

o.bid拿不到真正的id号,而是一个Book类型的对象,其原因是bid为关联Book表的外键约束,o.bid.bid才可以拿到想要的id值:

img


推荐阅读
  • SQL Server开发技巧:修改表结构后的视图批量更新方法与实践 ... [详细]
  • 深入解析 Django 中用户模型的自定义方法与技巧 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • 本文详细探讨了Java集合框架的使用方法及其性能特点。首先,通过关系图展示了集合接口之间的层次结构,如`Collection`接口作为对象集合的基础,其下分为`List`、`Set`和`Queue`等子接口。其中,`List`接口支持按插入顺序保存元素且允许重复,而`Set`接口则确保元素唯一性。此外,文章还深入分析了不同集合类在实际应用中的性能表现,为开发者选择合适的集合类型提供了参考依据。 ... [详细]
  • 在开发系统查询搜索功能时,需注意以下几点以提高信息检索效率:首先,在SQL语句中,每个参数占位符“?”后必须紧跟相应的参数赋值,确保参数与赋值一一对应,避免因参数不匹配导致的错误。其次,进行模糊搜索时,若用户输入通配符“%”,可能会导致全表扫描,因此需要对输入的“%”进行特殊处理或限制,以防止不必要的性能开销。此外,建议使用索引优化查询速度,并合理设计搜索逻辑,以提升用户体验。 ... [详细]
  • 开发心得:深入探讨Servlet、Dubbo与MyBatis中的责任链模式应用
    开发心得:深入探讨Servlet、Dubbo与MyBatis中的责任链模式应用 ... [详细]
  • 智能制造数据综合分析与应用解决方案
    在智能制造领域,生产数据通过先进的采集设备收集,并利用时序数据库或关系型数据库进行高效存储。这些数据经过处理后,通过可视化数据大屏呈现,为生产车间、生产控制中心以及管理层提供实时、精准的信息支持,助力不同应用场景下的决策优化和效率提升。 ... [详细]
  • 本文深入探讨了数据库性能优化与管理策略,通过实例分析和理论研究,详细阐述了如何有效提升数据库系统的响应速度和处理能力。文章首先介绍了数据库性能优化的基本原则和常用技术,包括索引优化、查询优化和存储管理等。接着,结合实际应用场景,讨论了如何利用容器化技术(如Docker)来部署和管理数据库,以提高系统的可扩展性和稳定性。最后,文章还提供了具体的配置示例和最佳实践,帮助读者在实际工作中更好地应用这些策略。 ... [详细]
  • 我正在使用 Ruby on Rails 构建个人网站。总体而言,RoR 是一个非常出色的工具,它提供了丰富的功能和灵活性,使得创建自定义页面变得既高效又便捷。通过利用其强大的框架和模块化设计,我可以轻松实现复杂的功能,同时保持代码的整洁和可维护性。此外,Rails 的社区支持也非常强大,为开发过程中遇到的问题提供了丰富的资源和解决方案。 ... [详细]
  • 在 JavaScript 中,对象可以被转换为字符串、数字或布尔值。具体而言,对象转换为字符串时,若对象定义了 `toString` 方法,则会调用该方法并返回相应结果。大多数情况下,这一过程会自动执行,因为所有对象都继承了 `toString` 方法。此外,对象转换为数字时,会先尝试将其转换为字符串,再进行数值解析。对于布尔值的转换,非空对象通常会被视为 `true`,而空对象则被视为 `false`。这些转换规则在实际开发中非常有用,能够帮助开发者更好地处理不同类型的数据。 ... [详细]
  • 在探讨如何高效处理大规模数据报表的分页展示之前,首先需要明确导致报表加载缓慢的主要原因。通常情况下,这主要是由于两个方面:一是查询条件过于宽泛,使得数据库返回的结果集包含数百万甚至更多的记录;二是前端渲染性能不足,无法高效处理大量数据。为了优化这一过程,可以从以下几个方面入手:优化查询条件,减少不必要的数据返回;采用分页查询技术,每次仅加载所需的数据;利用缓存机制,减少对数据库的频繁访问;提升前端渲染效率,使用虚拟滚动等技术提高用户体验。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • 从用户转型为开发者:一场思维升级的旅程 | 专访 StarRocks Committer 周威
    从用户转变为开发者,不仅是一次角色的转换,更是一场深刻的思维升级之旅。本次专访中,StarRocks Committer 周威分享了他如何在这一过程中逐步提升技术能力与思维方式,为开源社区贡献自己的力量。 ... [详细]
  • 本文详细解析了 MySQL 5.7.20 版本中二进制日志(binlog)崩溃恢复机制的工作流程。假设使用 InnoDB 存储引擎,并且启用了 `sync_binlog=1` 配置,文章深入探讨了在系统崩溃后如何通过 binlog 进行数据恢复,确保数据的一致性和完整性。 ... [详细]
author-avatar
张琪健V
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有