在Django中从两个不直接相关的模型进行内连接

2 投票
1 回答
551 浏览
提问于 2025-04-16 20:57

假设我有一个这样的模型(为了清晰起见,去掉了所有不相关的字段):

A(Model):
   someFields = ... #irrelevant in this case

B(Model):
   a = ForeignKey(A)
   my_data = ... #the data I need to retrieve

C(Model):
   user = ForeingKey(User)
   a = ForeignKey(A)
   class Meta:
      unique_together = ('user', 'a')

现在,我想知道如何用Django的查询来得到和这个SQL语句相同的结果:

SELECT my_data FROM B WHERE B.a_id = C.a_id AND C.user = %user%

1 个回答

3

幸运的是,你的查询使用了一个已经存在的关系。

B.objects.filter(a__c__user=someuser).distinct().values('my_data')

撰写回答