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_department
的 leader
。但是,如果您希望以这种方式 注释 每个部门(例如,因为您需要快速访问这些字段),您可以这样写:
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_name
和 last_name
包含 first_name
和 last_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
对于任何经常访问 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_department
的 leader
。但是,如果您希望以这种方式 注释 每个部门(例如,因为您需要快速访问这些字段),您可以这样写:
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_name
和 last_name
包含 first_name
和 last_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