通用视图可以让我们的生活变得更轻松,但是花在理解这些东西如何工作上的时间使得它们实际上变得更难。也许是我,但我试图解决这个问题很长一段时间,我可以自己轻松地写下这个观点并继续前进,但我坚持要学习它。
我想要显示一个自定义的DetailView类,代码抛出:
'Sculpture' object has no attribute 'filter'
from django.shortcuts import render, get_object_or_404
from django.views.generic import ListView, DetailView
from sculptures.models import Sculpture
class SculptureListView(ListView):
"""docstring for SculptureListView"""
def get_queryset(self):
return Sculpture.objects.all()
class SculptureDetailView(DetailView):
"""docstring for SculptureDetailView"""
def get_queryset(self):
sculpture = get_object_or_404(Sculpture, slug=self.kwargs['slug'])
return sculpture
我知道它需要一行修复 - 最多但无法弄清楚。
和想法?
答案 0 :(得分:8)
get_queryset
,顾名思义,应该返回一个Queryset,而不是一个对象。
答案 1 :(得分:5)
返回单个对象,请使用get_object
class SculptureDetailView(DetailView):
"""docstring for SculptureDetailView"""
def get_object(self):
sculpture = get_object_or_404(Sculpture, slug=self.kwargs['slug'])
return sculpture