使用sing创建多个对象

2024-04-20 14:23:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用django REST框架在我的名为cart的模型中添加多个对象。用户将cart对象的多组数据发送到CartAddSerializer,序列化器将在数据库中逐个添加行。到目前为止,我的代码进度如下:

在模型.py公司名称:

class Cart(models.Model):
    user = models.ForeignKey(User)
    product = models.ForeignKey(Product)
    sh_price = models.DecimalField(max_digits=10, decimal_places=2)
    quantity = models.IntegerField()
    date_added = models.DateTimeField(auto_now_add=True, blank=True, null=True)

class Meta:
    unique_together = ["user", "product"]

在序列化程序.py公司名称:

^{pr2}$

在视图.py公司名称:

class CartAddAPIView(ListCreateAPIView):
    queryset = Cart.objects.all()
    serializer_class = CartAddSerializer
    lookup_field = 'pk'
    lookup_url_kwarg = 'id'

    def get(self, request, *args, **kwargs):
        try:
            cart = Cart.objects.filter(user=self.kwargs['id'])
            print(cart)
            serializer = CartDetailSerializer(cart, many=True, context={'request': request})
            return Response(serializer.data, status=status.HTTP_200_OK)
        except Exception as e:
            print(str(e))
            return Response({"status": "failed"}, status=status.HTTP_400_BAD_REQUEST)

Tags: 对象py模型名称truemodelsrequeststatus
1条回答
网友
1楼 · 发布于 2024-04-20 14:23:50

一般来说,ListCreateAPIView是由GenericAPIView、ListModelMixin、CreateModelMixin混合而成的,因此它不提供创建列表对象的函数。很有趣~listcreateapiview

这是一个示例,您应该用json格式的数据发布它。在

[
    {
        "user": 1,
        "product": 2,
        "sh_price": 10,
        "quantity": 3,
     },
    {
        another object
    },
    ...
]


def post(self, request):
    serializer = self.get_serializer(data=request.data, many=True, context={'request': request})  #many=True
    serializer.is_valid() #validate request.data
    serializer.save()     #save every object of request.data

相关问题 更多 >