【发布时间】:2025-12-06 05:35:01
【问题描述】:
有两种型号
class Question(models.Model):
text = models.TextField()
class Vote(models.Model):
cas_id = models.IntegerField()
question = models.ForeignKey(Question, on_delete=models.CASCADE, related_name='votes')
我想回答所有问题。每个问题的投票集应仅包含cas_id=123 的投票。某些问题的投票集可能为空。
SQL 查询如下所示:
with user_votes as (
select *
from votes
where cas_id = 123
)
select *
from question q left join user_votes uv on q.id = uv.question_id;
如何在一个查询中通过 django-ORM 完成?
我试过了。
-
.filter(votes__cas_id=123)不包括额外的行。 - 2 个查询和一些代码工作正常。
【问题讨论】:
-
Question.objects.filter(votes__cas_id=123)应该可以工作 -
@Stargazer 您的查询过滤问题。因此,结果只会提出具有特定投票的问题。但我想像 SQL 查询一样得到所有问题。
标签: python sql django postgresql