Созданный мною набор запросов некорректно пропускает некоторые элементы.У меня есть три модели в Django:
class Case(models.Model):
agents = models.ManyToManyField('UserProfile', related_name='agent_of', blank=True, null=True)
organization = models.ForeignKey(Organization, related_name='case_org')
class UserProfile(models.Model):
name = models.CharField(max_length=40)
user = models.ForeignKey(User, unique=True, related_name='user_profile')
organization = models.ForeignKey(Organization, related_name='org_members', blank=True, null=True)
class Organization(models.Model):
name = models.CharField(max_length=75)
Я пытаюсь составить список неназначенных дел.То есть, случаи, в которых текущий пользователь не является агентом, включая случаи, когда им вообще не назначены агенты.Вот мой запрос:
Case.objects.filter(
organization=request.user.user_profile.get().organization.id).exclude
(Q(agents__user=request.user))
Это хорошо работает для случаев, когда им назначены другие агенты (модель UserProfile).Но он не возвращает случаи, когда им не назначен ни один агент.Я почти уверен, что это связано с тем фактом, что у дел без назначенного им агента нет строки в промежуточной таблице, соединяющей UserProfiles и Cases.
Другими словами, если у меня есть эти дела:
Дело / Агенты
Дело 1: Том, Стив
Дело 2: Стив
Дело 3: Джейн
Дело 4: никто
Мой запрос вернет Case2 и Case3, но не Case4.Попытка включить этот Case4.
Извините, если это не очень ясно, любая помощь приветствуется.