django комментирует, существует или нет - PullRequest
1 голос
/ 30 марта 2020

У меня есть запрос, который я использую:

people = Person.objects.all().annotate(num_pets=Count('pets'))
for p in people:
    print(p.name, p.num_pets == 0)

(домашнее животное - это много с человеком)

Но меня не интересует количество домашних животных, а только есть ли у человека домашние животные или нет. Как это можно сделать?

1 Ответ

1 голос
/ 31 марта 2020

Вы можете использовать выражение Exists [Django -doc] , чтобы определить, существует ли Pet для этого Person. Например:

from django.db.models import Exists, OuterRef

Person.objects.annotate(
    <b>has_pet=Exists(Pet.objects.filter(person=OuterRef('pk')))</b>
)

Здесь модель, таким образом, Pet, которая имеет ForeignKey с именем person до Person. Если поля названы по-разному, вам, конечно, следует соответствующим образом обновить запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...