Python ListView视图对象没有属性';对象';
我以前将视图作为DetailView,但是当我想添加分页时,我需要将视图更改为ListView。但这样做之后,它开始抛出这个错误:Python ListView视图对象没有属性';对象';,python,html,django,Python,Html,Django,我以前将视图作为DetailView,但是当我想添加分页时,我需要将视图更改为ListView。但这样做之后,它开始抛出这个错误:“CategoryDetailView”对象没有属性“object”我认为我需要将类别分配给self,但我不能100%确定如何做到这一点 我试过: def category(self , request , *args , **kwargs): self.object = self.get_object() return self.ob
“CategoryDetailView”对象没有属性“object”
我认为我需要将类别分配给self,但我不能100%确定如何做到这一点
我试过:
def category(self , request , *args , **kwargs):
self.object = self.get_object()
return self.object
但它不起作用,所以现在就是这样
视图:
感谢大家使用DetailView
列表视图
用于呈现指定的模型
的对象列表。但是,在这里,您只想检索单个类别
,并且该类别的帖子
,因此您应该使用。如文档中所述,该视图包含一个self.object
:
执行此视图时,self.object
将包含视图所操作的对象
因此,在这里,我们可以通过访问URL参数中的pk
来获取相关的Category
。我们在这里通过Post
s实现listview。你在分页什么,类别还是帖子?这看起来不像listview
,而是DetailView
。我需要一个分页者,因为会有很多帖子,我不能把这些都放在一个人身上page@MaxLoyd:在这种情况下,这是一个ListView
overPost
s,然后您应该在类别id上进行筛选,将进行更新。啊,好的,我想是这样的,谢谢you@MaxLoyd:请参阅编辑。当然,它可能需要一些额外的“抛光”。类别使用slug,您介意告诉我如何过滤类别的slug吗
class CategoryDetailView(ListView):
model = Category
paginate_by = 1
def get_context_data(self, **kwargs):
context = super(CategoryDetailView, self).get_context_data(**kwargs)
context['category_posts'] = Post.objects.filter(live=True, category=self.object)
return context
from django.views.generic import DetailView
class CategoryDetailView(DetailView):
model = Category
def get_context_data(self, **kwargs):
context = super(CategoryDetailView, self).get_context_data(**kwargs)
context['category_posts'] = self.object.post_set.filter(live=True)
return context
from django.views.generic import ListView
class CategoryDetailView(ListView):
model = Post
paginate_by = 20
def get_queryset(self):
return super().get_queryset().filter(category__id=self.kwargs['pk'])
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['category'] = Category.objects.get(id=self.kwargs['pk'])
return context