0

readme ページの例と同様に、drf-nested-routersを使用した単純なネストされたルーターがあります。DEFAULT_PAGINATION_CLASSネストされたルートのリスト ビューは、私の設定を無視して、まったく改ページされません。これは設計によるものですか?ネストされたルートは手動でページネーションを実装する必要がありますか? self.get_paginated_responseネストされたビューセットのlistメソッドを呼び出そうとすると、次のエラーが発生します。

AttributeError at /api/foo/13/bar/
'PageNumberPagination' object has no attribute 'page'

ネストされたビューでの私のlist方法は次のとおりです。

def list(self, request, workplan_pk=None):
        milestones = self.get_queryset()
        wp = get_object_or_404(Workplan, pk=workplan_pk)
        milestones = milestones.filter(workplan=wp)
        return Response(self.get_serializer_class()(milestones, many=True, context={'request': request}).data)
4

1 に答える 1

1

これはルーターとは関係ありません。ルーティングはビューに対して透過的であり、ビューが取得するのはRequestオブジェクトだけです。

ModelViewSet.get_queryset()次のようにオーバーライドできます。

class WorkplanMilestones(ModelViewSet):
    #...
    def get_queryset(self):
        wp = get_object_or_404(Workplan, pk=self.kwargs['workplan_pk'])
        return wp.milestones

ここでは、url パラメーターが呼び出され、マイルストーン モデルの逆の関係であると想定していworkplan_pkますmilestones

これはワークプランのマイルストーンを返し、残り (ページネーションを含む) は によって処理されModelViewSetます。

于 2015-10-22T17:56:49.000 に答える