私はGame
モデルを持っており、それに対して対応するRESTルートを実行しています。 GET /game
、GET /game/1
などPOSTをlist_routeに許可するが、ViewSet全体には許可しないでください。
私は、APIコンシューマーに既存のゲームを提供したいと思うだけです。私は彼らが新しいゲームを任意にPOSTできるようにしたくありません。むしろ、彼らは特別なルートPOST /game/upload_schedule
を通過する必要があります。
私は、次のしている:
class GameViewSet(viewsets.ModelViewSet):
queryset = Game.objects.all()
serializer_class = GameSerializer
http_method_names = ['get', 'head']
@list_route(methods=['post'])
def upload_schedule(self, request):
return Response(["foo"])
しかし、私POST /game/upload_schedule
は、私がエラーを許可されていない方法を得るとき。その理由は、http_method_names
が発生しないようにするためです。次のように変更した場合:
http_method_names = ['get', 'head', 'post']
次に、POST /game/upload_schedule
ルートが動作します。しかし、今もそうですPOST /game
!
どうすればいいですか?