Django условная проверка существования отношения "многие ко многим
Модель:
class RecordModel(BaseModel):
    visibility_setting = models.PositiveIntegerField()
    visible_to = models.ManyToManyField(UserModel, blank=True)
 Мне нужно вернуть строки в зависимости от строки visibility_setting:
- if 
visibility_setting == 0- возвращает строку без каких-либо проверок, - if 
visibility_setting == 1- мне нужно проверить, существует ли пользователь вvisible_tom2m-отношении. 
 Во втором случае запрос работает нормально, но в первом случае мой подход к установке None в первом случае не работает ( как ожидалось):
Feed.objects.filter(
    visible_to=Case(
        When(visibility_setting=0, then=None),  # no data returned in this case, but I want to 
                                                # return all rows with visibility_setting=0
        When(visibility_setting=1, then=user.id),  # rows with visibility_setting=1 are queried okay
    )
)
 Я немного запутался, какой способ использовать в этой ситуации? Можем ли мы вообще не применять case в некоторых условиях или использовать какое-то конкретное значение по умолчанию, чтобы пропустить проверку отношений visible_to? 
Вы можете .filter(…) [Django-doc] с:
from django.db.models import Q
Feed.objects.filter(Q(visibility_setting=0) | Q(visible_to=my_user)).distinct()
вызов .distinct() [Django-doc].
предотвращает возврат одного и того же Feed несколько раз.