Логика фильтрации в 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))