Вам не нужно создавать новый набор запросов, если у вас есть ссылка на отдел, для которого вы хотите получить пользователей.
Использование этого models.py
для тестирования ...
from django.db import models
class Department(models.Model):
name = models.CharField(max_length=64, unique=True)
description = models.TextField(blank=True, null=True)
def __str__(self):
return self.name
class User(models.Model):
username = models.TextField()
department = models.ForeignKey(
Department,
on_delete=models.CASCADE,
blank=True,
null=True,
)
def __str__(self):
return self.username
Этот запрос должен совпадать с запросом, который вам понадобится для получения пользователей для Department
экземпляра с именем department
:
department.user_set.all()
Пример из оболочки Django:
>>> from depts.models import Department, User
>>>
>>> department = Department.objects.create(name='The North Pole')
>>>
>>> for name in ('kungphu', 'K. Jones', 'S. Claus'):
... User.objects.create(
... username=name,
... department=department,
... )
...
<User: kungphu>
<User: K. Jones>
<User: S. Claus>
>>> for user in department.user_set.all():
... print(user)
...
kungphu
K. Jones
S. Claus
Также вы можете использовать department.users
вместо department.user_set
, если добавите related_name='users'
в поле User.department
.