如何制作使用两个 类 的 Django 查询集?

How can I make a django query-set that uses two classes?

如何在 Django 查询集中 link 两个 classes。例如,我有一个 class 人和一个 class 部门。一个人有属性工资,一个部门有属性领导。怎么查询部门领导的工资呢

我很高兴能得到任何帮助:)

您不需要特殊查询,Department 对象的 leader 属性使您可以访问完整的 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 对象的信息(而不是通常的 "lazy" 等待实际需要的方法)。然而,这只是一种优化,通常并不需要。


如果您想使用对象中的字段跨关系过滤查询集,您可以使用 the __ notation,它表示两个模型之间的关系:

departments = Department.objects.filter(leader__salary=100)