django - 你能写一个 Django ManyToMany 自定义级联删除吗?
问题描述
我正在将 Django 3.1 与 PostgreSQL 一起使用。这是一个示例设置:
**Tables:**
Batch (id, name)
Data (id, Batch, Stuff(ManyToMany))
Stuff (id, name)
考虑这种情况:如果我在 Batch 中添加一条 id 为 1 的记录,然后在链接到 Batch#1 的 Data 中添加 10,000 条记录,并且每个项目都可能引用 Stuff 表中的一些项目。
问题: 如果我删除 Batch#1,它最终会创建一个这样的查询来删除多对多关系:
DELETE FROM "data_stuff" WHERE "data_stuff"."data_id" IN (1, 2, 3 ... 9999, 10000)
那是列出了很多ID。我希望查询是这样的:
DELETE FROM "data_stuff" WHERE "data_stuff"."data_id" IN (SELECT U0."id" FROM "data" U0 WHERE U0."batch_id" = 1)
关于在删除批处理记录时如何让它像我的第二个示例一样生成 SQL 的任何想法?
解决方案
推荐阅读
- cassandra - 由于磁盘空间不足,cassandra 压缩未完成
- objective-c - 桥接 Objective-C 代码时的可空性指南
- python - 我尝试在 Django2 中迁移时出错
- sql-server - 将列声明为主键并向表中添加数据时为空的统计信息
- groovy - Groovy 替换 JSON 块中的字符串
- c++ - 在paintEvent中警告QPainter
- javascript - 无法找到模拟 JS 对象的方法
- r - 为什么边缘介数和加权边缘介数结果完全相同?
- python - Python:如何根据布尔变量反转列表成员资格检查?
- apache-flink - 需要在 flink MapFunction 中使用 mysql 连接