[英]Django rest update object from other model
我将Django 1.7与REST框架配合使用。 我想更新购物车实例,然后创建订单的新实例。
#models.py
class Cart(models.Model):
to_be_deleted = models.BooleanField(default=False)
...
class Order(models.Model):
...
#views.py
class OrderBuyList(generics.ListCreateAPIView):
serializer_class = OrderBuySerializer
def create(self, request, *args, **kwargs):
data = request.data
# First mark cart instance to be deleted and then create an order instance
# Request can come from cart.
cart = Cart.objects.filter(id=data['id'],user_id=data['user_id'])
if cart:
cart[0].to_be_deleted = True
cart[0].save()
return generics.ListCreateAPIView.create(self, request, *args, **kwargs)
我觉得这不是编写此逻辑的最佳方法。 因为可能发生以下情况,所以购物车已更新且未创建订单实例。 然后,我不知道该如何将哪个购物车not
转换为订单。 有没有更好的方法来实现这一目标?
您可以手动创建订单并在此之后更新购物车,如下所示:
def create(self, request, *args, **kwargs):
data = request.data
cart = Cart.objects.get(id=data['id'],user_id=data['user_id'])
serializer = self.get_serializer(data=data)
serializer.is_valid(raise_exception=True)
order = Order.objects.create(**serializer.validated_data)
cart.to_be_deleted = True
cart.save()
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.