2012-12-05 30 views
0

在Django的1.4.2,我用一個簡單的分頁代碼像given in official documentation「經理」的對象是Django的分頁unsubscriptable錯誤

... 
paginator = Paginator(songs, 25) # Show 25 songs per page 

page = request.GET.get('page') 
try: 
    songs = paginator.page(page) 
except PageNotAnInteger: 
    # If page is not an integer, deliver first page. 
    songs = paginator.page(1) 
except EmptyPage: 
    # If page is out of range (e.g. 9999), deliver last page of results. 
    songs = paginator.page(paginator.num_pages) 
... 

當我運行這個觀點,我得到「‘經理’​​對象是不可替代的songs = paginator.page(1)行錯誤。我搜索錯誤,但我找不到任何解決方案。問題是什麼?

編輯:

songs是Django的模型對象名單。全視圖代碼是這樣的:

def index(request): 
    songs = Song.objects 

    #filter params 
    q_name = request.GET.get('name', None) 
    if q_name: 
     songs = songs.filter(name__contains=q_name) 

    q_composer = request.GET.get('composer', None) 
    if q_composer: 
     songs = songs.filter(composer__name__contains=q_composer) 

    q_composer_id = request.GET.get('composer_id', '') 
    if q_composer_id != '': 
     songs = songs.filter(composer__id=q_composer_id) 

    paginator = Paginator(songs, 25) # Show 25 contacts per page 

    page = request.GET.get('page') 
    try: 
     songs = paginator.page(page) 
    except PageNotAnInteger: 
     # If page is not an integer, deliver first page. 
     songs = paginator.page(1) 
    except EmptyPage: 
     # If page is out of range (e.g. 9999), deliver last page of results. 
     songs = paginator.page(paginator.num_pages) 

    return render(request, 'index.html', {'songs': songs}) 
+1

什麼是歌曲? –

+0

我覺得我的編輯更清晰。 –

回答

1

當沒有提供過濾器時會發生什麼。然後,您正在嘗試對AuditManger進行分頁,而不是查詢集。您應該將第一個查詢更改爲:

songs = Song.objects.all() 
+0

哦,我明白了...我幾個小時都看不到。謝謝! –

+0

是的,事情發生..所有最好的! –

相關問題