0

Django 1.4.2 では、公式ドキュメントにあるような単純なページネーション コードを使用します。

...
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)
...

そのビューを実行すると、「'Manager' object is unsubscriptable」というエラーが表示されsongs = paginator.page(1)ます。エラーを検索しましたが、それに関する解決策が見つかりませんでした。何が問題ですか?

編集:

songsdjango モデル オブジェクト リストです。完全なビュー コードは次のようになります。

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})
4

1 に答える 1

1

フィルタが提供されていない場合はどうなりますか。次に、クエリセットではなく、AuditMangerをページ分割しようとしています。最初のクエリを次のように変更する必要があります。

songs = Song.objects.all()
于 2012-12-05T20:23:32.267 に答える