2017-08-30 2 views
0

django restフレームワークを試して、2つのエンドポイントが同じモデルに基づいて異なるデータを返すことは可能ですか? 私はこのようなものが必要です。同じモデルに基づいて2つのエンドポイントまたはメソッドを作成する - django restframework

api/tarjetasuarioは、特定のユーザーによって作成されたオブジェクトを返す必要がある間に作成されたすべてのオブジェクトを返す必要があります。

おかげ

class TarjetaViewSet(viewsets.ModelViewSet): 
 
    queryset = Tarjeta.objects.all() 
 
    serializer_class = TarjetaSerializer 
 
    permission_classes = (OwnerPermission,) 
 

 

 
class TarjetasusuarioViewSet(APIView): 
 
    queryset = Tarjeta.objects.all() 
 
    serializer_class = TarjetaSerializer 
 
    permission_classes = (OwnerPermission,) 
 

 
    def get_queryset(self): 
 
     return Tarjeta.objects.filter(usuario=self.request.user)

+0

2つのビューを書くのはどうしてですか? GETパラメータを使用して単一のビューセットとフィルタを記述することができます...! – zaidfazil

+0

このコードは私にとっては正しいようです。何かエラーが出ていますか? –

+0

エラーはありませんが、私は両方で同じデータを取得しています。おそらく問題はルータにあるのでしょうか?何か案は? 'code'ルータ= defaultrouterに() router.register(r'tarjetas'、TarjetaViewSet) router.register(r'tarjetasusuario 'TarjetasusuarioViewSet) urlpatterns = [ URL(R'^API- url(r '^'、include(router.urls))、 ] + static(settings.STATIC_URL、document_root = settings.STATIC_ROOT) ) 'code' –

答えて

0

は、私はあなたがTarjetasusuarioViewSetクラスにModelViewSetから延長しなければならないと思います

class TarjetaViewSet(viewsets.ModelViewSet): 
    queryset = Tarjeta.objects.all() 
    serializer_class = TarjetaSerializer 
    permission_classes = (OwnerPermission,) 


class TarjetasusuarioViewSet(APIView): 
    user = User.objects.get(username=request.user) 
    queryset = Tarjeta.objects.filter(usuario=user) 
    serializer_class = TarjetaSerializer 
    permission_classes = (OwnerPermission,) 
0

この参照して試してみてください:

class TarjetaViewSet(viewsets.ModelViewSet): 
    queryset = Tarjeta.objects.all() 
    serializer_class = TarjetaSerializer 
    permission_classes = (OwnerPermission,) 


class TarjetasusuarioViewSet(viewsets.ModelViewSet): 
    queryset = Tarjeta.objects.all() 
    serializer_class = TarjetaSerializer 
    permission_classes = (OwnerPermission,) 

    def get_queryset(self): 
     return Tarjeta.objects.filter(usuario=self.request.user) 
関連する問題