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

Umu*_*acı 1 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
Run Code Online (Sandbox Code Playgroud)

我知道它需要一个线路修复 - 最多但无法弄清楚.

和想法?

Dan*_*man 8

get_queryset顾名思义,应该返回一个Queryset,而不是一个对象.


Tha*_*ran 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
Run Code Online (Sandbox Code Playgroud)