Django 新手,不确定如何编写将 FK 绑定在一起的查询集

New to Django, unsure how to write queryset tying FK's together

对于任何经常访问 django 标签的人,您可能会意识到我是 django 的新手(实际上已经很长时间没有进行开发了)。

我正在为 ORM 的查询而苦苦挣扎。

我有两个模型,用户和部门。部门有一个领导者,对用户来说是 FK。

如何 return 部门的所有实例及其关联的用户名字和姓氏?

类似于:

SELECT Department.dept, User.first_name, User.last_name 
FROM Departments, Users
WHERE Department.leader = User.Id OR Department.leader = NULL

感谢您的帮助,我的想法还不能接受用 ORM 来思考查询。

How do I return all instances of department and its associated first & last name of the user?

您可以使用 some_department.leader 访问 some_departmentleader。但是,如果您希望以这种方式 注释 每个部门(例如,因为您需要快速访问这些字段),您可以这样写:

from django.db.models import <b>F</b>

Department.objects.annotate(
    first_name=F('leader__first_name')
    last_name=F('leader__last_name')
)

这将 return Department 个实例,但是每个 departement 都有两个额外的属性,first_namelast_name 包含 first_namelast_name 相应的领导者。

这将导致如下查询:

SELECT department.*,
       user.first_name AS first_name,
       user.last_name AS last_name
FROM departement
LEFT OUTER JOIN user ON department.leader_id = user.id