2017-08-10 16 views
0

私はAPIバックエンドにDRFを使用しています。 1つの投稿要求に複数のオブジェクトを挿入する必要があります。私は非常に多くのチュートリアルを見ただけでなく、How do I create multiple model instances with Django Rest Framework?でも成功しませんでした。私はModelSerializerを使用していますが、を使用すると多くの場合= Trueの場合ListSerializerに問題があります。Django rest framework:複数のオブジェクトを1つの投稿リクエストに挿入する

views.py

class SaleUserViewSet(ModelViewSet): 
    queryset = SaleUser.objects.all() 
    serializer_class = SaleUserSerializer(many=True) 

serlializers.py

class SaleUserSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = SaleUser 
     fields = ('id', 'comment', 'creation_date', 'modification_date', 'last_user', 'user', 'sale', 'user_sale_type') 

エラーメッセージ

AttributeError at /api/sale_user/ type object 'Meta' has no attribute 'model' 

お知らせください。おかげさまで あなたのデフォルトに

+0

はstackoverflowのへようこそ。 こんにちは、コードとエラートレースを追加してください。 –

+0

ありがとう、ベア、私はコードとエラーメッセージで私の質問を編集しました。 –

答えて

0

ロールバック・シリアライザは

class SaleUserSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = SaleUser 
     fields = ('id', 'comment', 'creation_date', 'modification_date', 'last_user', 'user', 'sale', 'user_sale_type') 

とそれにビューをオーバーライドします。

class SaleUserViewSet(ModelViewSet): 
    queryset = SaleUser.objects.all() 
    serializer_class = SaleUserSerializer 

    def create(self, request, *args, **kwargs): 
     data = request.data.get("items") if 'items' in request.data else request.data 
     many = isinstance(data, list) 
     print (data, many) 
     serializer = self.get_serializer(data=data, many=many) 
     serializer.is_valid(raise_exception=True) 
     self.perform_create(serializer) 
     headers = self.get_success_headers(serializer.data) 
     return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers) 
+0

とshow printをしてください。 –

+0

request.dataに 'items'がある場合は 'data = request.data.get(" items ")を書き換えます。他の場合はitem.data:= SyntaxError:条件式に代入できません。書き換えられたコードでもエラーが発生します。 'AssertionError at/api/sale_user/ シリアライザインスタンスのインスタンス化時に 'data ='キーワード引数が渡されなかったため、 '.is_valid()'を呼び出せません。 –

+0

もう一度やり直しても問題は解決しました –

関連する問題