python - 使用 Django ORM 从 2 个表中删除记录
问题描述
我正在使用 Django 并且有 2 个表,我想从连接中删除记录。
这些是简化的模型定义:
from django.db import models
class MyModelA(models.Model):
created = models.DateTimeField(null=True, blank=True)
class MyModelB(models.Model):
modela = models.OneToOneField(
MyModelA, on_delete=models.DO_NOTHING, db_constraint=False
)
created = models.DateTimeField(null=True, blank=True)
如果我使用SQL
,我可以编写一个DELETE
带有连接的语句,这将删除连接返回的所有记录,如下所示:
DELETE a, b
FROM mymodela AS a
INNER JOIN mymodelb AS b
ON a.id = b.modela_id
WHERE a.created < '<some date>'
我想使用 Django ORM 和delete()
方法。
我可以使用以下方法轻松编写SELECT
等效内容:
MyModelA.objects.filter(mymodelb__isnull=False)
.filter(created__lt=<some date>)
.select_related("mymodelb")
但是,当我链接 时,仅删除了delete()
中的记录,并且生成的-query 是这样的:MyModelA
SQL
DELETE FROM mymodela WHERE mymodela.id IN (<LIST OF IDs in JOIN>)
我当然可以使用不同的on_delete
操作或获取 id 列表并逐表删除记录,但我想知道:是否可以获得DELETE a, b FROM...
如上所示的语句?
解决方案
推荐阅读
- pytorch - 联合训练两个网络时,pytorch 的 Cuda 内存不足问题
- python - 从vuejs中的api获取访问令牌后如何登录用户?
- javascript - Razor 页面中的 DataTables 服务器端 ajax 过滤
- javascript - javascript中的setInterval函数在几秒钟后停止执行
- go - 加载工作区时出错:错误:退出状态 1:stderr:go:需要更新 go.sum,由 -mod=readonly 禁用:packages.Load 错误
- mongodb - 为什么在对 mongodb 中的现有集合进行散列分片后,数据仍在一个分片中?
- android - 在模块 core-1.5.0-runtime (androidx.core:core:1.5.0) 和 support-compat-27.1 中发现重复的类 android.support.v4.os.ResultReceiver$MyRunnable
- javascript - 执行