来自Django中两个不直接相关模型的内连接

时间:2011-07-06 16:59:29

标签: python sql django django-models inner-join

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

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 个答案:

答案 0 :(得分:3)

幸运的是,您的查询使用现有关系。

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