繁体   English   中英

Django rest 框架:在一个 post 请求中插入多个对象

[英]Django rest framework: Insert multiple objects in one post request

我在 API 后端使用 DRF。 我需要将多个对象插入到一个 post 请求中。 看了这么多教程,还有How do I create multiple model instances with Django Rest Framework? ,但没有成功。 我正在使用 ModelSerializer,但是当使用many=True 时,ListSerializer 会出现问题。

视图.py

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

序列化器.py

class SaleUserSerializer(serializers.ModelSerializer):

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

错误信息

/api/sale_user/ 类型对象 'Meta' 处的 AttributeError 没有属性 'model'

请指教。

将序列化程序回滚到默认值

class SaleUserSerializer(serializers.ModelSerializer):

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

并覆盖它的视图:

from rest_framework.response import Response    

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

    def create(self, request, *args, **kwargs):
        data = request.data.get('items', 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
        )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM