2017-08-03 21 views
-4

任何人都可以帮助我如何在使用ORM的Django中的不同值上编写多个自我连接?在使用ORM的Django中,如何在不同的值上执行多个自我连接

例如,我们有两个表格。 (1)项目(2)project_tab_status

tables as picture

我已经写了查询,如下而无法访问的第二个连接字段:

Project.objects.filter(projecttabstatus__tab_status_type='processor1').annotate(tab_status_type_bv=Concat('projecttabstatus__tab_status_type', Value(''), Value('')),tab_status_bv=Concat('projecttabstatus__tab_status', Value(''), Value(''))).filter(projecttabstatus__tab_status_type='processor2').values('name', 'tab_status_type_bv', 'projecttabstatus__tab_status_type', 'projecttabstatus__tab_status', 'tab_status_bv', 'projecttabstatus__id').filter(id=698) 

但第二个处理器的值不来正确。

+0

后的模型结构 – Exprator

+0

嗨Exprator先生,感谢您选择我的问题..请点击以下链接获得的模型结构https://i.stack.imgur.com/oOiFO.png – user3041830

回答

0

您可以尝试关注关系backward

all_projects = Projects.objects.all() 
for project in all_projects: 
    project.project_tab_status_set.all() # this will give you the project_tab_status objects associated with a given project. 
+0

你好,谢谢选择我的问题。实际上我们正在循环父项目的循环相同。和父项目不映射与project_tab_status。只有子项目与project_tab_status表映射。 (这就是为什么我在上面的查询中保留parent_project_id过滤器。) – user3041830

+0

我不确定父项目和子项目是什么意思? – badiya

相关问题