Логика фильтрации в Django

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

Мне нужно сделать следующее: если у родителя нет назначенных ролей пользователя, то я хочу, чтобы все родительские объекты (по сути, игнорировали фильтр). Но если у него есть несколько ролей пользователей, я хочу фильтровать на основе того, что пользовательская_роль дочернего объекта также находится в родительской пользовательской_роли.

class UserRole(models.Model):
   name = charfield()


class Parent(models.Model):
   ...
   user_roles = m2m(UserRole)
   ...

class Child(models.Model):
   user_role = FK(UserRole)

Что-то вроде:

filter = Q(Q(parent__user_roles=Child.user_role) | Q(Ignore if parent__user_roles==None))

Я ответил, не понимая, на какой вопрос. Кажется, работает так, как мне нужно.

filter = Q(Q(parent__user_roles=Child.user_role) | Q(parent__user_roles=None))
Вернуться на верх