2011-08-24 107 views
0

通用视图的存在使我们的生活变得更加简单,但花在了解这些东西如何工作上的时间实际上让他们更难。也许是我自己,但我一直在想如何解决这个问题很长一段时间,我可以轻松地写出自己的观点并继续前进,但我坚持要学习它。django的通用视图问题(detailview,get_queryset)

我想显示自定义的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 

我知道这需要一个固定线 - 最多,但无法弄清楚。

和想法?

回答

8

get_queryset,顾名思义,应该返回一个Queryset,而不是一个单独的对象。

4

返回单个对象,使用的get_object

class SculptureDetailView(DetailView): 
    """docstring for SculptureDetailView""" 
    def get_object(self): 
     sculpture = get_object_or_404(Sculpture, slug=self.kwargs['slug']) 
     return sculpture