def create(self, request): cart_item = CartItemSerializer(data=request.data, context={'request': request}) if cart_item.is_valid(): cart_item.save() return Response(cart_item.data, status=status.HTTP_201_CREATED) else: return Response(cart_item.errors, status=status.HTTP_400_BAD_REQUEST)
def update(self, request, pk): obj = self.get_obj(pk) serializer = CartItemSerializer(obj, data=request.data, context={'request': request}) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_200_OK) else: return Response(status=status.HTTP_400_BAD_REQUEST)
def retrieve(self, request, pk=None): try: obj = CartItem.objects.select_related('item').get(id=pk) serializer = CartItemSerializer(obj) return Response(serializer.data, status=status.HTTP_200_OK) except ObjectDoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND)
def list(self, request): try: cart = request.user.current_cart queryset = CartItem.objects.select_related('item').filter( cart=cart) objects = self.paginate_queryset(queryset) serializer = CartItemSerializer(objects, many=True) return self.get_paginated_response(serializer.data) except ObjectDoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND)
def writable(self, request): """ 마이컬리 - 상품 후기 - 작성 가능 후기 API ---- 헤더에 토큰이 담기지 않으면 에러가 발생합니다. 작성 가능한 후기들이 카트 아이템의 형태로 나옵니다. """ qs = CartItem.objects.filter(order__user=request.user).filter(status='c') serializers = CartItemSerializer(qs, many=True) return Response(serializers.data, status=status.HTTP_200_OK)
def report(self, request, *args, **kwargs): service_requests = ServiceRequest.objects.all() serializer = ServiceRequestSerializer() new_list = [] for service_request in service_requests: serializer = ServiceRequestSerializer(service_request) data_ = serializer.data cart_item = CartItem.objects.filter(service_request=service_request).first() cart_item_serializer = CartItemSerializer(cart_item) data_['transaction'] = cart_item_serializer.data new_list.append(data_) return Response(new_list)
def get(self, request, format=None): cart = self.get_cart() self.cart = cart self.update_cart() #token = self.create_token(cart.id) items = CartItemSerializer(cart.cartitem_set.all(), many=True) print cart.items.all() data = { "token": self.token, "cart": cart.id, "total": cart.total, "subtotal": cart.subtotal, "tax_total": cart.tax_total, "count": cart.items.count(), "items": items.data, } return Response(data)
class OrderSerializers(ModelSerializer): total_payment = serializers.SerializerMethodField() discount_payment = serializers.SerializerMethodField() discount_price = serializers.SerializerMethodField() items = CartItemSerializer(many=True) orderdetail = OrderDetailSerializers() user = UserOrderSerializers() class Meta: model = Order fields = ('id', 'items', 'total_payment', 'discount_price', 'discount_payment', 'orderdetail', 'user') def get_total_payment(self, obj): return obj.total_payment def get_discount_payment(self, obj): return obj.discount_payment def get_discount_price(self, obj): return int(obj.total_payment - obj.discount_payment)
def get_cart_items(self, obj): return CartItemSerializer( obj.cart_items.all(), many=True, context=self.context ).data