Skip to main content
 首页 » 编程设计

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

2024年09月03日29lyhabc

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

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% 

请您参考如下方法:

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

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