2013-03-11 3 views
0

Очень просто ... Я использую Django 1.4.1, и вам нужно заказать запрос, обратившись к количеству комментариев к нему. Я использую структуру комментариев Django и попытался использовать структуру .annotate (comment_count = Count ('comment'), рекомендованную в других ответах ... Я получаю «комментарий», не разрешает ошибку поля.Django: Запросить запрос, заданный комментарием

Я также попробовал версию Джанго-родового-агрегата, который вызывает ошибку базы данных 0.3.1, так что вне.

Photo.objects.filter(galleries=gallery).annotate(comment_count=Count('comments')).order_by('-comment_count')[(page-1)*RESULTS_PER_PAGE:page*RESULTS_PER_PAGE] 

Любые предложения?

+0

Пожалуйста, обновите свой вопрос с соответствующим содержимым модели 'Photo' –

+0

Я запутался ... Система комментариев встроена в Django. Он прикрепляется к любой модели. Сама структура фотомоделей не имеет значения, я мог бы также попытаться заказать Widgets по количеству комментариев. –

+0

Игнорировать мой комментарий. Я не понял, что приложение для комментариев использует «GenericForeignKey» и поэтому не требует явной ссылки, связанной с вашей моделью «Фото». Вы можете обнаружить, что то, что вы пытаетесь сделать, в настоящее время невозможно. См. [Здесь] (https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#generic-relations-and-aggregation) –

ответ

0

Поместите функцию под фотомодель

class Photo(models.Model): 
    ......... 

    def orders(self): 
     //filter first the highest count of comments 
     aggregate = Photo.objects.aggregate(comment_count=Count('comments')) 
     return aggregate['comment_count'] + 1 

Тогда вы можете назвать это как это в виду:

comments = Photo.objects.filter(galleries=gallery).orders() 
+0

Спасибо за ответ Кэтрин! Я запутался, хотя, я пытаюсь заказать мой запрос на comment_count ... Будет ли этот метод делать это? (заказывает имя магического метода?) –

+0

У меня есть модель значка, и мне нужно получить рейтинг пользователей на основе очков, поэтому я сделал это, и он работает. Я не знаю на твоей стороне, просто попробуй. Если не работает, мы попробуем другой, пока ваша проблема не будет решена :) – catherine

 Смежные вопросы

  • Нет связанных вопросов^_^