我有2个表部门和员工
Dept has 2 columns ID and Name
Employees has 3 columns ID, Dept_ID, Name
现在给出了一个emloyee名称" XYZ"我必须检索所有具有名称" XYZ"的员工的部门名称。
我知道他们的解决方法是首先从Employee表中检索所有dept_id having name == "XYZ"
,然后再从查询表中检索部门名称的另一个查询。
他们是一种在单个查询中检索记录的方法。
答案 0 :(得分:1)
return Dept.objects.filter(employees_set__name='XYZ')
应该做的工作。
答案 1 :(得分:1)
我强烈建议您为所有外键使用“related_name”:
class Employee(models.Model):
dept = models.ForeignKey(Dept, related_name='employees')
然后你可以这样做:
dept = Dept.objects.get(id=10)
for employee in dept.employees.all():
...
以及您要询问的查询:
Dept.objects.filter(employees__name='XYZ')
这对于添加更有意义的名称非常有用。在这种情况下,这不是什么大问题(只是删掉'set'),但它对于User表的关系非常有用...