django-rest自定义url在ModelViewSet中 [英] django-rest custom url in a ModelViewSet

查看:1162
本文介绍了django-rest自定义url在ModelViewSet中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在django-rest-framework中向ModelViewSet添加自定义URL时遇到问题。以下是我的主要urls.py的一个例子

I'm having an issue adding a custom URL to a ModelViewSet in django-rest-framework. Here's an example of my main 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

对于像

 /api/post/

我正在寻找得到一整天,如

I'm looking to get a set day like

/api/post/yyyy/mm/dd/

或者我应该使用像

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


推荐答案

将列表方法作为单独的视图拉出:

Pull the list method out as a separate view:

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

然后将它映射到基于日期的查找URL,通常设置

Then map this to your date-based lookup URL as you usually would, setting parameters for year, month and day.

get_queryset 中,您可以检查这些kwargs是否设置,如果是,过滤查询。

In get_queryset you can check if these kwargs are set and, if so, filter the queryset.

这篇关于django-rest自定义url在ModelViewSet中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆