Как проверить, является ли поле ManyToManyField подмножеством набора запросов при фильтрации в Django

class OrganizationUser(models.Model):
    pass

class Feedback(models.Model):
  teams_shared_with = models.ManyToManyField('team.Team', related_name="feedback")

class Team(models.Model):
    leads = models.ManyToManyField('organizations.OrganizationUser', related_name='teams_lead_at')
    members = models.ManyToManyField('organizations.OrganizationUser', related_name='teams_member_at', blank=True)

У меня есть вышеуказанная модель, все поля не были показаны. Я хочу отфильтровать те отзывы, которыми поделились в любой команде, где я являюсь членом или администратором.

Я хотел бы сделать что-то вроде:

Feedback.objects.filter(teams_shared_with is a subset of organization_user.teams_lead_at.all()|organization_user.teams_member_at.all())

Как мне это сделать?

from django.db.models import Q

user1 = OrganizationUser.objects.first() #some organization user

Feedback.objects.filter(
    Q(teams_shared_with__leads=user1)
    |Q(teams_shared_with__members=user1)
)

Существует вероятность дублирования отзывов Используйте distinct(), чтобы избежать этого

from django.db.models import Q

users = OrganizationUser.objects.all()

Feedback.objects.filter(
    Q(teams_shared_with__leads = users)
    |Q(teams_shared_with__members = users)
).distinct()
Вернуться на верх