Django Rest框架创建Orders和Order Item

问题描述

我想创建一个订单和订单商品。 为此,我只是使用CreateApiView在views.py中创建新的模型对象,但是却收到错误消息,应包含“ Serializer_class”,但我不需要序列化器。

// views.py

class CreateOrder(CreateAPIView):
        def Post(self,request):
            header_token = request.Meta.get('HTTP_AUTHORIZATION',None)
            print(header_token)
            access_token = header_token.split(' ')[1]
            status,user  = validate_token(access_token)
            cart=Cart.objects.get(user=user)
            print(cart)
            if cart:
                total=cart.total
                userprofile=UserProfile.objects.get(user=user)
                order,created=Order.objects.get_or_create(billing_profile=userprofile,total=total)
    
            cart_items=CartItem.objects.get(cart=cart)
            print(cart_items)
            for item in cart_items:
                itemid=item.item_id
                qty=item.quantity
                item_instance = Items.objects.get(item_id=item)
                order_item,created = OrderItems.objects.get_or_create(order=order,product=item_instance,quantity=qty)
                order.save()
                order_item.save()
                if created:
                    item.delete()
            return Response (status=rt_status.HTTP_200_OK)
        

我想了解如何使用或不使用序列化器

解决方法

您要覆盖错误的result = result* x 方法。如果您查看post的源代码,将会看到如下所示的方法。

CreateAPIView

注意:该方法均为小写。

此方法调用class CreateAPIView(mixins.CreateModelMixin,GenericAPIView): """ Concrete view for creating a model instance. """ def post(self,request,*args,**kwargs): return self.create(request,**kwargs) 派生的self.create,此方法需要序列化程序。

如果您需要轻巧的东西而无需串行器,我建议您使用CreateModelMixin

APIView

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...