すべてのユーザーが複数の画像を持つことができるユーザーと画像の間に関係があります。特定のユーザーのすべての画像を取得するエンドポイントを定義する必要があります。
GET /users/:id/images
私はこのようにしました:
urls.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