2011-05-02 5 views
1

queryset을 주석 수로 필터링하고 주석 수를 기준으로 내림차순으로 정렬하는 방법은 무엇입니까?Django의 의견 수별 필터 개체

Post.objects.filter(comment_count > 0).order_by('-comment_count')과 같은 작업을 시도했지만 작동하지 않습니다.

감사합니다.

내 포스트 모델 :

class Post(models.Model): 
nickname = models.CharField(max_length=200, default=u'anonymous') 
body = models.TextField() 
pub_date = models.DateTimeField('Date Published', auto_now_add=True) 
up_date = models.DateTimeField('Date Updated', auto_now=True) 
category = models.ForeignKey(Category, related_name='post_category') 
counter = models.IntegerField(default=0) 
status = models.IntegerField(choices=POST_STATUS, default=0) 
votes = models.IntegerField('Votes', default=0) 

이 편집 :

그냥 다음 코드

from django.contrib.contenttypes import generic 
from django.contrib.comments.models import Comment 

comments = generic.GenericRelation(Comment, object_id_field="object_pk") 

을 추가 그리고 내보기 :

post_list = Post.objects.annotate(comment_count=Count('comments')).filter(status=STATUS.ACCEPTED).filter(comment_count__gt=0).order_by('-comment_count') 

가 내 모델을 고정 코드보기. 그들은 현재 잘 작동하고 있습니다.

감사합니다.

답변

2

'주석'사용; 이 같은 : 답장을 보내 http://docs.djangoproject.com/en/dev/topics/db/aggregation/

+0

감사 :

from django.db.models import Count Post.objects.annotate(comment_count=Count('comments')).filter(comment_count__gt=0).order_by('-comment_count') 

이 더 많은 정보를 원하시면 다음을 참조하십시오. 이 코드는''comments ''가 무엇인지 어떻게 알 수 있습니까? 내 게시물 모델에는 주석에 대한 참조가 없습니다. 먼저 해당 참조를 포스트 모델에 추가해야합니까? – rabbid

+0

'comment_set'와 같은 코멘트 모델에 대한 참조가 있다면 그것을 사용하십시오. 당신이 당신의 모델을 게시하지 않았을 때, 나는 단지 추측이었습니다. – MattH

+0

게시물 모델 코드가 포함되었습니다. 내가 장고의 내장 된 주석 모델을 사용하고 있는데 그것에 대한 참조가 없다. 나는 그들의 튜토리얼 (http://docs.djangoproject.com/en/1.3/ref/contrib/comments/)을 따르고있다. 이전에 Disqus를 구현했지만 지금은 대신 Django의 주석을 사용하려고합니다. 그래서 내가 처음 만지면됩니다. 그렇다면 내 Post 모델에서 Comments 모델에 대한 참조를 만드는 방법은 무엇입니까? 고마워요! – rabbid