Django - возможно ли сделать набор запросов в Count () - PullRequest
0 голосов
/ 01 октября 2018

У меня есть следующие модели

class Client(models.Model):
    ...

class Request(models.Model):
    ...
    client = models.ForeignKey(Client, on_delete=models.SET_NULL, null=True)
    completed = models.BooleanField()

Я хочу получить количество всех выполненных запросов для набора запросов клиентов.Следующее утверждение получает все запросы, но не проверяет, завершен ли запрос.

clients = Client.objects.filter(...).annotate(Count('request'))

Я хочу вот что:

clients = Client.objects.filter(...).annotate(Count(request__completed=True))

Как мне этого добиться

Ответы [ 2 ]

0 голосов
/ 01 октября 2018
from django.db.models import Count
ModelName.objects.aggregate(Count('id'))

пожалуйста, проверьте ссылку для более

0 голосов
/ 01 октября 2018

Как упомянул @Red Cricket, вы можете получить отфильтрованный счет по методу Дайнго count() как

Client.objects.filter(my_otherfilters..<b>,request__completed=True).count()</b>

Это вернет целочисленное значение , представляющее счет.


Если вы хотите QuerySet, а также count,

qs = Client.objects.filter(my_otherfilters..<b>,request__completed=True</b>) # the "qs" will get the querysets
qs_count = qs<b>.count()</b> # "qs_count" will return the count
...