如何链接django查询集中的两个类。例如,我有一个Person类和一个类Department。一个人有一个属性工资,一个部门有一个属性领导者。如何进行查询以获得部门领导的薪水。
我很高兴得到任何帮助:)
答案 0 :(得分:1)
您不需要特殊查询,leader
对象上的Department
属性可让您访问完整的Person
对象及其所有属性:
department = Department.objects.get(pk=1)
print(department.leader.salary)
在幕后,上面的代码将生成两个SQL查询器。要确保只发出一个查询,您可以选择使用select_related:
department = Department.objects.select_related('leader').get(pk=1)
print(department.leader.salary)
这样Django将在原始查询期间获取有关领导者Person
对象的信息(而不是通常的"懒惰"等待实际需要的方法)。然而,这只是一种优化,而且通常不需要时间。
如果您想使用关系中对象的字段过滤查询集,可以使用the __
notation,它代表两个模型之间的关系:
departments = Department.objects.filter(leader__salary=100)