Python 更改后类函数不';行不通

Python 更改后类函数不';行不通,python,django,Python,Django,在将有关注释的函数从ContentDetailView剪切到IndexView之后,我无法运行我的服务器,而且它无法工作 class IndexView(AllAdsViewMixin, ListView): model = UserContent template_name = 'user_content/list.html' context_object_name = 'usercontent' def get_queryset(self): """Return the last

在将有关注释的函数从ContentDetailView剪切到IndexView之后,我无法运行我的服务器,而且它无法工作

class IndexView(AllAdsViewMixin, ListView):
model = UserContent
template_name = 'user_content/list.html'
context_object_name = 'usercontent'

def get_queryset(self):
    """Return the last all five published contents"""
    return UserContent.objects.filter(state='1').order_by('-published')[:5]

def get_context_data(self, **kwargs):
    content_type = self.object.get_content_type
    initial_data = {
        'content_type': content_type,
        'object_id': self.object.id,
    }

    comment_form = CommentForm(initial=initial_data)
    comments = Comment.objects.filter(
        content_type=content_type,
        object_id=self.object.id
    )

    context = super(IndexView, self).get_context_data(**kwargs)
    context['comments'] = comments
    context['comment_form'] = comment_form

    return context

def post(self, request, **kwargs):
    self.object = self.get_object()
    content_type = self.object.get_content_type
    comment_form = CommentForm(request.POST)

    if comment_form.is_valid():
        content_data = comment_form.cleaned_data.get('content')
        parent_obj = None
    try:
        parent_id = int(request.POST.get('parent_id'))
    except:
        parent_id = None

    if parent_id:
        parent_qs = Comment.objects.filter(parent__id=parent_id)
        if parent_qs.exists() and parent_qs.count() == 1:
            parent_obj = parent_qs.first()

    new_comment, created = Comment.objects.get_or_create(
        user=request.user,
        content_type=content_type,
        object_id=self.object.id,
        content=content_data,
        parent=parent_obj
    )

    return self.get(request, **kwargs)
错误:

'IndexView' object has no attribute 'object'
有人能帮我吗


当函数在ContentDetailView类中时,它可以工作。ContentDetailView类具有相同的模型、模板名称和上下文对象名称。

您的
ContentDetailView
类继承自
DetailView
,但您的
IndexView
继承自
ListView

如果您查看的文档,您可以看到没有名为
get\u object()
的方法。如文件所述

列表视图呈现一些对象列表,这些对象由
self.model
self.queryset
设置。
self.queryset
实际上可以是项目的任意iterable,而不仅仅是一个queryset

因此,您在视图中引用的
self.object
不存在

但在这种情况下,如果你看一下文件

DetailView渲染对象的“细节”视图

默认情况下,这是从
self.queryset
中查找的模型实例,但是 视图将通过覆盖
self.get\u object()
支持显示任何对象

您在
索引视图中实现的逻辑显然是错误的。

您需要先查看文档。

首先,“它不起作用”不是一个有用的描述,请参阅。那么
列表视图的“对象”是什么?当对象是
详细视图时,它是什么?函数def get_context_data和def_post在ContentDetailView类中。现在我需要把这个函数放到IndexView类中。最后它不起作用了。我粘贴context_object_name='object'时出现了这个错误,我是初学者,不知道该怎么做。对不起,我的能力不够,英语很差。