如何制作使用两个 类 的 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)
如何在 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)