django - 如何在 Django 中手动添加删除 SQL 约束?
问题描述
在现有的 Django 项目中,当删除某个模型的对象时,我遇到了严重的性能问题。实际上整个基础设施都崩溃了。
我很高兴这是由另一个具有许多大型条目的模型的外键字段引起的。
经过几个小时的谷歌搜索,我找到了一个可能的解决方案:在数据库级别上实现删除约束。
我还在 Django PR https://github.com/django/django/pull/8661中找到了一个持久的讨论,它将启用此功能。但我似乎从未达到 100% 并且不会在不久的将来合并。
Django Docs https://docs.djangoproject.com/en/3.1/ref/models/fields/#django.db.models.DO_NOTHING中提到了解决我的问题的另一种方法
没做什么
不采取行动。如果您的数据库后端强制执行引用完整性,这将导致 IntegrityError,除非您手动将 SQL ON DELETE 约束添加到数据库字段。
我正在使用 MariaDB。而且我想在数据库级别仅向一个模型的一个外键字段添加一个 SET_NULL 约束。
我怎么能在 Django 中做到这一点?如果他们解决了我的问题并且不引入新的问题,我可以完美地接受硬编码的丑陋解决方案。
解决方案
推荐阅读
- c++ - 如何使用 goto 语句打印矩阵
- jquery - classList.toggle() 仅应用于最后一项
- python - 如何在没有 RDP 的情况下使用 pywinauto 展开或双击 TreeItem
- php - 关于 zip 流如何处理 php 中的大文件的问题
- python - Flask - Bad Request 浏览器发送了一个服务器无法理解的请求
- c++ - 使用带有 glm 的 2d 正交矩阵时遇到问题
- java - 如何在 Firebase 实时数据库中存储浮点列表?
- android - ViewPager setCurrentItem 未按预期工作
- spring - 在 Spring Cloud AWS Messaging 中将加密 SQS 与 KMS 集成
- c++ - 如何在不操纵原始内容的情况下将 std::bitset<8> 输出的类型更改为整数?