【发布时间】:2023-02-03 18:36:39
【问题描述】:
我有两个模型如下:
class Model1(models.model):
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
filename = models.CharField(max_length=255)
class Model2(models.model):
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
filename = models.CharField(max_length=255)
我想获得相关的model2,它在filename 中的列值与model1 中的列值相同。
我的解决方案是使用 Subquery 或 Extra。 Subquery的问题在于它只允许查询一列,但我想要的是model2与model1相关的所有列的dict对象。他们不要有 foreignkey 关系才能使用 select_related。所以我尝试使用extra,但我再次收到多列错误。我怎么解决这个问题?
我的代码如下:
model1_objs = Model1.objects.filter(id=given_id).extra(
select={
"model2_obj": f"SELECT *
FROM model2
WHERE filename = model1.filename
AND id = '{model2_id}'"
}
)
这是行不通的。
【问题讨论】:
标签: django django-orm