8

django-rest-framework の ModelViewSet にカスタム URL を追加する際に問題が発生しています。これが私のメインurls.pyの例です

router = routers.DefaultRouter()
router.register(r'post', PostViewSet)

urlpatterns = patterns('',
    url(r'^api/', include(router.urls)),
)

私のモデルビューセットは次のようになります

class PostViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows users to be viewed or edited.
    """
    queryset = Post.objects.all()
    serializer_class = PostSerializer
    permission_classes = (permissions.IsAuthenticatedOrReadOnly, IsOwnerOrReadOnly,)
    search_fields = ('created')

    def pre_save(self, obj):
        obj.user = self.request.user


    #
    # based on the post type this will decide which serializer to use for the data
    def get_serializer_class(self):
        #
        # default is the Text role serializer
        return PostSerializer

それは次のようなURLに最適です

 /api/post/

私は次のような設定された日を取得しようとしています

/api/post/yyyy/mm/dd/

または、次のようなものを使用する必要があります

/api/post/?year=&month=&day=
4

1 に答える 1

11

list メソッドを別のビューとして引き出します。

post_list = PostViewSet.as_view({'get': 'list'})

次に、これを通常どおり日付ベースのルックアップ URL にマップし、年、月、日のパラメーターを設定します。

これらget_querysetの kwargs が設定されているかどうかを確認し、設定されている場合は、クエリセットをフィルター処理できます。

于 2013-08-12T21:01:22.570 に答える