首页 > 解决方案 > django 浏览次数显示“NoneType”对象没有属性“comment_set”

问题描述

'''views.py,

我正在学习 django / python,但我遇到了一个问题。显示一些错误,例如“NoneType”对象没有属性“comment_set”,我如何解决问题。这是查看次数的代码。
'''

class PostDetail(FormMixin, DetailView):
    model = BlogSlider
    template_name = "blogdetails.html"
    form_class = CommentForm
    context_object_name = 'detail'


    def get_success_url(self):
        return reverse_lazy('blog-details', kwargs={
            'slug':self.object.slug
        })

    def get_context_data(self, **kwargs):
        context = super(PostDetail, self).get_context_data(**kwargs)
        context['commenting'] = self.object.comment_set.all()
        context['form'] = self.get_form()
        context['own'] = BlogSlider.objects.all().exclude(user=self.request.user)[:4]
        return context


    def post(self, request, *args, **kwargs):
        self.object = self.get_object()
        form = self.get_form()
        if form.is_valid():
            return self.form_valid(form)
        else:
           return self.form_invalid(form)

    def form_valid(self, form):
        form.instance.user = self.request.user
        form.instance.post = self.get_object()
        form.save()
        return super(PostDetail, self).form_valid(form)

    def get_object(self):
        client = self.request.META['REMOTE_ADDR']
        ip = IP()
        print(client)
        print(IP)
        blogview = super(PostDetail, self).get_object()
        print(str(blogview.ip.all()))
        if client not in str(blogview.ip.all()):
            ip.ip_list = client
            ip.save()

            blogview.ip.add(ip)
            blogview.views_count += 1
            blogview.save()
            return blogview

标签: djangodjango-modelsdjango-formsdjango-viewsdjango-templates

解决方案


换行

context['commenting'] = self.object.comment_set.all()

context['commenting'] = self.object.comment_set.all() if self.object else []

您正在尝试阅读所有评论,即使对象设置为None


推荐阅读