如何在django查询中编写连接两个表的查询

时间:2017-07-13 11:00:22

标签: django django-queryset

表1:

cam = models.CharField()

temp = models.Interger()

 id cam temp
 1   hi  10
 2   he   2

表2:

cam = models.CharField()

count = models.Integer()

 cam count
  hi  5

select t2.count from Table2 t2 inner join Table1 t1 on t1.cam=t2.cam where t1.temp=10

任何人都可以使用django查询帮助编写上述查询。

2 个答案:

答案 0 :(得分:0)

根据您的说明,您的模型Table1Table2似乎应该相关,但您的代码中没有任何关系。

因此,完全基于您的问题描述,解决方案应该是:

table1_cam_list = [c.cam for c in Table1.objects.filter(temp=10)]
table2_list = Table2.objects.filter(cam__in=table1_cam_list)
for item in table2_list:
    print(item.count) 

答案 1 :(得分:0)

您可以使用values_list()cam获取Table1的列表,然后您可以使用该列表从Table2进行过滤。虽然您应该使用ForeginKey如果要在数据库中使用一对多关系,请填写}字段。

t1_cam_list=Table1.objects.filter(temp=10).values_list('cam', flat=True)
t2_list=Table2.objects.filter(cam__in=t1_cam_list).values_list('count',flat=True)