我在用户和图像之间建立了关系,每个用户都可以拥有多个图像。我需要定义一个端点来检索特定用户的所有图像:
GET /users/:id/images
我已经这样做了:
网址.py
router = routers.DefaultRouter()
router.register(r'images', ImageViewSet)
image_list = ImageViewSet.as_view({
'get': 'list'
})
urlpatterns = patterns('',
...
url(r'^', include(router.urls)),
url(r'^users/(?P<user_id>[^/]+)/images/$', image_list),
...
)
图片/views.py
class ImageViewSet(viewsets.ModelViewSet):
queryset = Image.objects.all()
serializer_class = ImageSerializer
def get_queryset(self):
user_id = self.kwargs.get('user_id', None)
if user_id:
return Image.objects.filter(user_id=user_id)
return super(ImageViewSet, self).get_queryset()
它有效,但我对此不满意。想象一些与 类似的附加端点/users/:user_id/images/
,即类似于/categories/:category_id/images/
等的一些端点。将它们get_queryset
作为这两个端点的入口点,让它根据 区分它们kwargs
,似乎不是很吸引人。有更好的方法吗?