実現したいこと
商品=カニがカートに入れられたら、カニ商品データ(Crabdb.model)から在庫数を取得して、カニの在庫数を一つ減らして新たに在庫数を保存したいです。
発生している問題・エラーメッセージ
'int' object has no attribute 'save'
該当のソースコード
django
1 2from django.shortcuts import render, redirect, get_object_or_404 3from django.http import HttpResponse, Http404, JsonResponse 4from django.contrib import messages 5from django.contrib.auth.decorators import login_required 6from django.contrib.auth.models import User 7from django.core.paginator import Paginator 8from ECrab.models import Profile, Crabdb, Cart 9 10import random 11 12def list_view(request): 13 Crabdb_list = Crabdb.objects.all().order_by('-id') 14 paginator = Paginator(Crabdb_list, 20) 15 16 try: 17 page = int(request.GET.get('page')) 18 except: 19 page = 1 20 21 posts = paginator.get_page(page) 22 return render(request, 'ECrab/post_list.html', {'posts': posts, 'page': page, 'last_page': paginator.num_pages}) 23 24def detail_view(request, post_id): 25 post = get_object_or_404(Crabdb, id=post_id) 26 27 try: 28 page = int(request.GET.get('from_page')) 29 except: 30 page = 1 31 return render(request, 'ECrab/post_detail.html', {'post': post, 'page': page }) 32 33def edit_cart(request, post_id): 34 35 post = get_object_or_404(Crabdb, id=post_id) 36 37 try: 38 page = int(request.GET.get('from_page')) 39 except: 40 page = 1 41 42 user_id = request.user.id 43 44 previous_cart = Cart.objects.filter(user_id=user_id, product_id=post_id) 45 46 if previous_cart.exists(): 47 48 previous_cart.delete() 49 else: 50 product = Cart(user_id=user_id, product_id=post_id) 51 product.save() 52 53 #在庫数を取得 54 x = Crabdb.objects.get(id=post_id) 55 stock_quality = x.stock 56 if stock_quality > 0: #在庫がある場合 57 stock_quality -= 1 #在庫を一つ減らす 58 stock_quality.save() 59 else: 60 print("在庫がありません") 61 62 return render(request, 'ECrab/post_detail.html', {'post': post, 'page': page }) 63 64
試したこと
stock_quality=stockはCrabdbモデルのデータの一部の整数だから、
モデルフィールドではなく、モデルインスタンスで保存を実行する必要がある。という文章を見つけました。
そのため、12行目のようにしてみたのですが、そしたらsave() missing 1 required positional argument: 'self'
とエラーが出てきました。
django
1・・・ 21 else: 32 #無ければユーザID・商品IDの組をカートに追加 43 #productはCartクラスのインスタンス 54 product = Cart(user_id=user_id, product_id=post_id) 65 product.save() 76 87 #在庫数を取得 98 x = Crabdb.objects.get(id=post_id) 109 stock_quality = x.stock 1110 if stock_quality > 0: #在庫がある場合 1211 stock_quality -= 1 #在庫を一つ減らす 1312 Crabdb.save() #モデルインスタンスで保存してみた 1413 else: 1514 print("在庫がありません")
djangoを始めたばかりで、引数などを理解していないから起こっているエラーだとは思います。
解決方法を教えてもらえると助かります。よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
Mac M1
shell zsh
python,django
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/28 15:34
2021/08/28 15:39
2021/08/28 15:49
2021/08/28 15:55
2021/08/28 16:34 編集
2021/08/28 17:03
2021/08/29 05:33
2021/08/29 07:00