2011-08-24 111 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