Упрощение кода функций при сохранении удобочитаемости

Этот код работает, но кажется мне слишком избыточным.

Можно ли как-то упростить его, сохранив функциональность и читабельность?

has_videos = self.request.query_params.get('has_videos')
if has_videos:
    if has_videos == 'true':
        entries = User.objects.filter(videos__isnull=False)
    elif has_videos == 'false':
        entries = User.objects.filter(videos__isnull=True)
else:
    entries = User.objects.all()

Я попытался написать в одну строку, используя тернарный оператор, но читабельность полностью исчезла

entries = Pet.objects.all() if has_photos not in ['true', 'false'] \
else Pet.objects.filter(photos__isnull=False) if has_photos == 'true' \
else Pet.objects.filter(photos__isnull=True)

Удалите внешний оператор if.

if has_videos == 'true':
    entries = User.objects.filter(videos__isnull=False)
elif has_videos == 'false':
    entries = User.objects.filter(videos__isnull=True)
else:
    entries = User.objects.all()

Меньше дублирования, все еще читабельно(?).

d = {'true':False, 'false':True}
try:
    entries = User.objects.filter(videos__isnull=d[has_videos])
except KeyError:
    entries = User.objects.all()
Вернуться на верх