'QuerySet'对象不支持项目分配

时间:2019-01-24 10:35:04

标签: python django django-class-based-views

class PostDetailView(DetailView):
    model = Post
    template_name = 'detail.html'

    def get_context_data(self, **kwargs):
        context = super(PostDetailView, self).get_context_data(**kwargs)
        instance = Post.objects.get(pk=self.kwargs.get('pk'))
        user = instance.post_user
        context['comments'] = Comment.objects.filter(comment_post=instance.pk)
        context['comments']['profile'] = Profile.objects.get(user=user)
        return context

到目前为止,这是我的看法。当我使用该代码时,出现此错误'QuerySet'对象不支持项目分配。如何正确附加下面的行?

context['comments']['profile'] = Profile.objects.get(user=user)

1 个答案:

答案 0 :(得分:0)

问题在于context['comments']的值不是字典,而是QuerySet对象。
所以你做不到:
context['comments']['profile'] = Profile.objects.get(user=user)

也许您可以将与Profile模型的关系添加到Comment模型中,例如:

class Comment(models.Model):
    profile = models.ForeignKey(Profile, ...)
    ...

因此,您可以访问发表评论的个人资料的值。