2017-08-10 49 views
0

我正在爲我的API後端使用DRF。我需要將多個對象插入到一個發佈請求中。我看到很多教程,以及How do I create multiple model instances with Django Rest Framework?,但沒有成功。我正在使用ModelSerializer,但在使用many = True時,ListSerializer會出現問題。Django rest框架:在一個post請求中插入多個對象

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

歡迎的計算器。嗨,請添加您的代碼和錯誤跟蹤。 –

+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

並顯示打印,請 –

+0

如果請求中的'requestData else data = request.data'到'if'項目,我重寫'data = request.data.get(「items」)數據: 數據= request.data.get(「items」) else: data = request.data',因爲我得到這個錯誤'SyntaxError:無法賦值給條件表達式'有了rewrited代碼仍然出錯'AssertionError at/api/sale_user/ 實例化序列化程序實例時,不能調用'.is_valid()'作爲不傳遞'data ='關鍵字參數。' –

+0

對不起,我修復了這兩個問題,您可以再試一次 –

相關問題