Как мне найти имя и его количество для объекта FK? - PullRequest
0 голосов
/ 18 июня 2020

Имея эти модели:

class AccidentJob(models.Model):
    name = models.CharField(max_length=50)

class Accident(TimeStampedModel, models.Model):
    job = models.ForeignKey(AccidentJob, on_delete=models.CASCADE)

Я хочу что-то вроде этого:

[
    {'job__name': 'Auxiliar de surtido', 'count': 2},
    {'job__name': 'Técnico de mantenimiento', 'count': 1}
]

, но получаю следующее:

[
    {'job__name': 'Auxiliar de surtido', 'count': 1},
    {'job__name': 'Auxiliar de surtido', 'count': 1},
    {'job__name': 'Técnico de mantenimiento', 'count': 1}
]

Это мой запрос :

from django.db.models import Count

Accident.objects.values(
    "job__name"
).annotate(
    count=Count('job__name')
).values("job__name", "count")

Я могу сделать это с помощью Python, но я бы предпочел, чтобы PostgreSQL выполнял работу.

1 Ответ

0 голосов
/ 19 июня 2020

Наконец-то я получил ответ , похоже, ему просто нужен order_by

Accident.objects.values(
    "job__name"
).annotate(
    count=Count('job__name')
).values(
    "job__name", "count"
).order_by(
    "job__name"
)

Итак, после настроек это лучшая версия:

Accident.objects.values(
    "job__name"
).order_by(
    "job__name"
).annotate(
    count=Count('job__name')
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...