0

私はdjango-profilesとdjango.contrib.commentsを使用しており、特定のユーザーのすべてのコメントをプロファイルに表示しようとしています。

これは、django-profiles のデフォルトの profile_detail ビューを使用しています。

私はこれら2つのアプローチを試しましたが、どちらもオブジェクトを返しません(ただし、このクエリに一致するオブジェクトは存在します):

{% 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")

コメントにはカスタム マネージャーもあります。

# Manager
    objects = CommentManager()

次のように定義されています。

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 クエリが何も返されていませんか? 逆リレーションに正しくアクセスしていますか? どんな助けでも大歓迎です。

4

1 に答える 1

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()
于 2011-03-13T22:10:30.250 に答える