2017-12-20 5 views
0

デバッガでこのエラーが表示されますが、実際にこのエンドポイントから返される応答は正しいです。 DBからシリアライザに既存のオブジェクトを渡すと、このエラーが発生します(コードサンプルの下に表示されています)。これは、POSTデータを取得してオブジェクトがDBに存在するかどうかを確認するcreate APIビューです。それが存在する場合はそのオブジェクトを返し、そうでなければオブジェクトを作成します。シリアライザにオブジェクトを渡すと、シリアライザに<class>のreprを取得できません。MyModel.serializers.MyModelSerializer '>

class CreateMyModel(generics.ListCreateAPIView): 
    serializer_class = MyModelSerializer 
    queryset = MyModel.objects.all() 
    permission_classes = (IsAuthenticated,) 
    authentication_classes = (JSONWebTokenAuthentication,) 

    def post(self, request, *args, **kwargs): 
     try: 
      obj = MyModel.objects.get(uuid=request.data.get('uuid')) 
      serializer = self.get_serializer(obj) <-- *serializer: Unable to get repr for <class 'MyModel.serializers.MyModelSerializer'>* 
      return Response(serializer.data, status=status.HTTP_200_OK) 
     except ObjectDoesNotExist: 
      return self.create(request, *args, **kwargs) 

class MyModel(models.Model): 
    uuid = models.UUIDField(primary_key=True) 
    field1 = models.TextField() 
    field2 = models.ForeignKey(SomeOtherModel) 

    def __str__: 
     return str(self.uuid) 
+0

シリアライザを追加できますか? –

答えて

0

投稿メソッドを上書きする必要はありません。 .ListCreateAPIViewには、それぞれgetおよびpost要求を行うときにトリガされる2つのアクションがあります(listおよびcreate)。これは必要なだけです:

class CreateMyModel(generics.ListCreateAPIView): 
    serializer_class = MyModelSerializer 
    queryset = MyModel.objects.all() 
    permission_classes = (IsAuthenticated,) 
    authentication_classes = (JSONWebTokenAuthentication,) 
+0

ええ、私はHugoを認識していますが、このAPIを使用しているアンドロイドデバイスはこのように動作しますので、変更できません。 –

関連する問題