Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python django中外键的反向查找_Python_Django_Django Orm - Fatal编程技术网

python django中外键的反向查找

python django中外键的反向查找,python,django,django-orm,Python,Django,Django Orm,我有两张桌子:部门和员工 Dept has 2 columns ID and Name Employees has 3 columns ID, Dept_ID, Name 现在给定一个Emloye名称“XYZ”,我必须检索所有有一个名为“XYZ”的员工的部门名称 我知道这是一个解决方法,首先从Employee表中检索名称为“XYZ”的所有部门id,然后再查询从dept表中检索部门名称 是在单个查询中检索记录的一种方法 return Dept.objects.filter(employees_s

我有两张桌子:部门和员工

Dept has 2 columns ID and Name
Employees has 3 columns ID, Dept_ID, Name
现在给定一个Emloye名称“XYZ”,我必须检索所有有一个名为“XYZ”的员工的部门名称

我知道这是一个解决方法,首先从Employee表中检索名称为“XYZ”的所有部门id
,然后再查询从dept表中检索部门名称

是在单个查询中检索记录的一种方法

return Dept.objects.filter(employees_set__name='XYZ')
我应该做这项工作

应该做这项工作。

我强烈建议对所有外键使用“相关名称”:

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”),但它对于用户表的关系非常有用,例如

我强烈建议对所有外键使用“相关名称”:

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”),但它对于用户表的关系非常有用,例如