2011-03-13 4 views
0

저는 django-profiles과 django.contrib.comments를 사용하고 있으며 프로필에 특정 사용자의 모든 댓글을 표시하려고합니다.Django는 사용자의 모든 댓글을 검색합니다.

이것은 django-profiles의 기본 profile_detail 뷰를 사용하고 있습니다.

나는이 두 가지 방법을 시도하고도 (해당 검색어와 일치하는 오브젝트가 존재하지만) 물건을 반환 :

{% for comment in profile.user.comment_set.all %} 

{% for comment in profile.user.user_comments.all %} 

을 django.contrib에 대한 소스 코드에서 .comments의 경우 Comment 모델의 외래 키에는 다음과 같은 관련 이름이 있습니다.

user = models.ForeignKey(User, verbose_name=_('user'), 
        blank=True, null=True, related_name="%(class)s_comments") 
class CommentManager(models.Manager): 

    def in_moderation(self): 
     """ 
     QuerySet for all comments currently in the moderation queue. 
      """ 
     return self.get_query_set().filter(is_public=False, is_removed=False) 

    def for_model(self, model): 
     """ 
     QuerySet for all comments for a particular model (either an instance or 
     a class). 
     """ 
     ct = ContentType.objects.get_for_model(model) 
     qs = self.get_query_set().filter(content_type=ct) 
     if isinstance(model, models.Model): 
      qs = qs.filter(object_pk=force_unicode(model._get_pk_val())) 
     return qs 

이 아무것도 반환하지 않도록 .ALL 쿼리를 발생시키는 사용자 정의 관리자입니다 :

# Manager 
    objects = CommentManager() 

다음과 같이 정의된다개 댓글 또한 사용자 지정 관리자가? 역관계에 올바르게 액세스하고 있습니까? 어떤 도움을 주시면 감사하겠습니다.

답변

0

관련 이름이 정의되어 있으므로 name_set이 작동하지 않습니다. related_name의 목적은 기본 역 관리자 이름을 대체하는 것입니다.

user = models.ForeignKey(User, verbose_name=_('user'), 
       blank=True, null=True, related_name="%(class)s_comments") 

그래서 이것을 사용 :

user.comment_comments.all() 
+0

감사합니다. 잘못된 클래스 이름 (주석 대신 사용자)을 사용하고있었습니다. 사실 그것은 user.comment_comments.all()이어야합니다. 마지막에있는 "s"를 전환해야합니다. –

+0

np! 오타 붙잡아 주셔서 감사합니다. –

관련 문제