我在向 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
这对于像这样的网址非常有用
/api/post/
我希望能有一个固定的日子,比如
/api/post/yyyy/mm/dd/
或者我应该使用类似的东西
/api/post/?year=&month=&day=
将 list 方法作为单独的视图拉出:
post_list = PostViewSet.as_view({'get': 'list'})
然后像平常一样将其映射到基于日期的查找 URL,设置年、月和日的参数。
In get_queryset
您可以检查是否设置了这些 kwargs,如果设置了,则过滤查询集。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)