Фильтр по количеству мультоманов - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть модели, определенные следующим образом:

class Employee(models.Model):
  ...
  user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)

class Project(models.Model):
  ...
  employees = models.ManyToManyField(Employee, null=True, blank=True)

Я пытаюсь получить все проекты, которым назначен хотя бы один сотрудник, но я не знаю как. Я пробовал следующие вещи:

projects.filter(employees__gt=0)

, где projects = Project.objects.all(), но я не думаю, что это правильный запрос, потому что, если я сделаю projects.filter(employees_lte=0), он ничего не вернет, даже если У меня есть проекты без назначенных сотрудников. Как я могу получить то, что я ищу? Не могли бы вы указать на страницу, где я могу найти все поиски, которые я могу использовать? Спасибо!

1 Ответ

1 голос
/ 24 февраля 2020

Вы можете попробовать это, используя isnull:

Project.objects.filter(employees__isnull=False)

Обновление

Если вы хотите проверить указанные c количество сотрудников, возможно, попробуйте вот так

from django.db.models import Count

Project.objects.annotate(employee_count=Count('employees')).filter(employee_count__gt=5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...