django的通用视图问题(detailview,get_queryset)

时间:2011-08-24 20:48:49

标签: django django-generic-views

通用视图可以让我们的生活变得更轻松,但是花在理解这些东西如何工作上的时间使得它们实际上变得更难。也许是我,但我试图解决这个问题很长一段时间,我可以自己轻松地写下这个观点并继续前进,但我坚持要学习它。

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

我知道它需要一行修复 - 最多但无法弄清楚。

和想法?

2 个答案:

答案 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