【问题标题】:In Django using ORM., how to do multiple self join on different values在使用 ORM 的 Django 中,如何对不同的值进行多个自连接
【发布时间】:2018-01-10 23:27:00
【问题描述】:

谁能帮助我如何使用 ORM 在 Django 中针对不同的值编写多个自联接?

例如,我们有两张桌子。 (1) 项目 (2) project_tab_status

我编写了如下查询,但无法访问第二个连接字段:

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)

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

【问题讨论】:

  • 贴出模型结构
  • 您好,Exprator 先生,感谢您选择我的问题。请点击下面的链接获取模型结构i.stack.imgur.com/oOiFO.png

标签: python mysql django orm


【解决方案1】:

您可以尝试关注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.

【讨论】:

  • 您好,感谢您选择我的问题。实际上,我们正在遍历父项目的 for 循环相同。并且父项目未与 project_tab_status 映射。只有子项目与 project_tab_status 表映射。 (这就是为什么我在上面的查询中保留了 parent_project_id 过滤器。)
  • 不知道你说的父项目和子项目是什么意思?
猜你喜欢
  • 2018-07-17
  • 2020-11-03
  • 2014-06-19
  • 1970-01-01
  • 2022-01-05
  • 2018-06-28
  • 2010-10-13
  • 2023-03-06
  • 2021-01-17
相关资源
最近更新 更多