Подтвердить что ты не робот

Отфильтровать объекты Django, где существует связанный объект

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

Это должно работать, но не кажется правильным:

Photo.objects.filter(complaint__id__gte=0)

Это не похоже на самый эффективный способ:

Photo.objects.annotate(Count('complaint')).exclude(complaint__count=0)

Есть ли лучший способ?

4b9b3361

Ответ 2

Я не уверен, что лучше, но это тоже работает.

Photo.objects.exclude(complaint=None)

Сгенерированный SQL-запрос здесь не такой, как в случае с .filter(complaint__isnull=False), но смысл идентичен.