Django Rest Framework を使用して API を作成しています。特定のオブジェクトに関する情報を返すために @link を使用しています。
class SomeClassView(viewsets.ReadOnlyModelViewSet):
@link
def info(self, request, pk=None):
obj = models.SomeClass.objects.get(pk=pk)
return Response({"info": object.info()})
GET: /someclass/1/info
私がやりたいのは、メソッドを拡張して「クラスレベル」でアクセスできるようにして、APIがオブジェクトのリストを受け入れることができるようにすることです
class SomeClassView(viewsets.ReadOnlyModelViewSet):
@link
def info(self, request, pk=None):
if isinstance(s, str):
obj = models.SomeClass.objects.get(pk=pk)
return Response({"info": obj.info()})
else:
objs = models.SomeClass.objects.filter(pk__in=pk).all()
return Response({"infos": [obj.info() for obj in objs]})
GET: /someclass/1/info
GET: /someclass/info?pk=1&pk=2&pk=3
API にクラス レベルのメソッドを追加する方法はありますか? それとも、1 つの API 呼び出しを処理するために新しいクラスを作成する必要がありますか?
PS:これを機能させるために別の方法が必要かどうかは気にしません