@bQ1

Почему происходит Django DISTINCT ProgrammingError?

ProgrammingError
SELECT DISTINCT ON expressions must match initial ORDER BY expressions

@property
def posts_count(self):
    return self.posts.order_by('user').distinct('user').count()
  • Вопрос задан
  • 264 просмотра
Решения вопроса 1
@deliro
Не понимаю, что ты хочешь этим дистинктом добиться. Количество постов у юзера?

Если да и метод posts_count принадлежит модели User, то:

self.posts.count()

Если общее решение на конкретного юзера:

user = ...  # Откуда-то у тебя есть юзер
Post.objects.filter(user=user).count()


Если ты хочешь одним запросом посчитать посты каждого юзера в БД, то:

Post.objects.values("user").annotate(cnt=Count("*"))


Ну и конечно их можно сортировать по количеству вхождений:

Post.objects.values("user").annotate(cnt=Count("*")).order_by("-cnt")
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы