问题描述
我想创建一个订单和订单商品。 为此,我只是使用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