有两种型号
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)
排除多余的行。答案 0 :(得分:1)
在查询中具有单独过滤器的预取应处理以下问题:
Question.objects.all().prefetch_related(Prefetch('votes', queryset=Vote.objects.filter(cas_id=123)))