def post(self, request, *args, **kwargs): id_value = request.POST.get('id_value') # 再注文のオーダーを取得 same_order = Order.objects.filter(user=request.user, pk=id_value) # 再注文のオーダーからカートを登録 error = [] for order in same_order: for same_cart in order.cart.all(): cart = Cart() cart.user = request.user error_flag = [] # データベースの存在を確認(サイズ) if SizeItem.objects.filter( title=same_cart.size_title).exists(): sizeitem = SizeItem.objects.get(title=same_cart.size_title) cart.size_title = sizeitem.title cart.size_price = sizeitem.price cart.size_image = sizeitem.image else: error_flag.append(same_cart.size_title) # データベースの存在を確認(フレーバー) if FlavorItem.objects.filter(title=same_cart.flavor_title, is_active=True).exists(): flavoritem = FlavorItem.objects.get( title=same_cart.flavor_title) cart.flavor_title = flavoritem.title if sizeitem.title == 'シングルサイズ': cart.flavor_price = flavoritem.price * 2 else: cart.flavor_price = flavoritem.price cart.flavor_image = flavoritem.image else: error_flag.append(same_cart.flavor_title) # データベースの存在を確認(フレーバー2) if FlavorItem.objects.filter(title=same_cart.flavor2_title, is_active=True).exists(): flavoritem = FlavorItem.objects.get( title=same_cart.flavor2_title) cart.flavor2_title = flavoritem.title cart.flavor2_price = flavoritem.price cart.flavor2_image = flavoritem.image elif same_cart.flavor2_title == '': cart.flavor2_title = '' else: error_flag.append(same_cart.flavor2_title) # データベースの存在を確認(オプション) if OptionItem.objects.filter( title=same_cart.option_title).exists(): optionitem = OptionItem.objects.get( title=same_cart.option_title) cart.option_title = optionitem.title cart.option_price = optionitem.price cart.option_image = optionitem.image elif same_cart.option_title == '': cart.option_title = '' else: error_flag.append(same_cart.option_title) # データベースの存在を確認(オプション2) if OptionItem.objects.filter( title=same_cart.option2_title).exists(): optionitem = OptionItem.objects.get( title=same_cart.option2_title) cart.option2_title = optionitem.title cart.option2_price = optionitem.price cart.option2_image = optionitem.image elif same_cart.option2_title == '': cart.option2_title = '' else: error_flag.append(same_cart.option2_title) # データベースの存在を確認(オプション3) if OptionItem.objects.filter( title=same_cart.option3_title).exists(): optionitem = OptionItem.objects.get( title=same_cart.option3_title) cart.option3_title = optionitem.title cart.option3_price = optionitem.price cart.option3_image = optionitem.image elif same_cart.option3_title == '': cart.option3_title = '' else: error_flag.append(same_cart.option3_title) # データベースの存在を確認(オプション4) if OptionItem.objects.filter( title=same_cart.option4_title).exists(): optionitem = OptionItem.objects.get( title=same_cart.option4_title) cart.option4_title = optionitem.title cart.option4_price = optionitem.price cart.option4_image = optionitem.image elif same_cart.option4_title == '': cart.option4_title = '' else: error_flag.append(same_cart.option4_title) # データベースにすべてあればカートに登録 if len(error_flag) == 0: cart.save() else: for flag in error_flag: if not flag in error: error.append(flag) return JsonResponse({'error': error})