前提・実現したいこと
実現したいことは二つあります。
0. 上記の画像のお会計を足した数字を売上合計のところに表示したいです。
2. 売上合計の箇所に一度足したら、二度目は足さなくても良いようにしたいです。
具体的にどのようにしたいかを申し上げますと、一枚目はお会計が12100なので、売上合計も12100になるのは良いのですが、二枚目の売上合計の表示のところは12100 + 6613 を足した18713にしたいです。しかし、6313になってしまいます。
お会計のタブを再度クリックすると、売上合計にお会計が再度足されます。
コードは下記のように書きました。
view.py def billfunc(request, pk): object = SalesModel.objects.get(pk=pk) if object.girlsdrink_confirmation == 'yes' and object.tax_confirmation == 'yes': object.bill = (object.tablecharge * object.custermer + object.girlsdrink_count * 1000 + object.staff_reservation_fee + object.champagne_fee + object.singlecharge) * 1.1 object.sales_total += object.bill object.save() return redirect('list') elif object.girlsdrink_confirmation == 'yes' and object.tax_confirmation == 'no': object.bill = (object.tablecharge * object.custermer + object.girlsdrink_count * 1000 + object.staff_reservation_fee + object.champagne_fee + object.singlecharge) object.sales_total += object.bill object.save() return redirect('list') elif object.girlsdrink_confirmation == 'no' and object.tax_confirmation == 'yes': object.bill = (object.tablecharge * object.custermer + object.girlsdrink_count * 0 + object.staff_reservation_fee + object.champagne_fee + object.singlecharge) * 1.1 object.sales_total += object.bill object.save() return redirect('list') else: object.girlsdrink_confirmation == 'no' and object.tax_confirmation == 'no' object.bill = (object.tablecharge * object.custermer + object.girlsdrink_count * 0 + object.staff_reservation_fee + object.champagne_fee + object.singlecharge) object.sales_total += object.bill object.save() return redirect('list')
list.html {% extends 'base.html' %} {% block content %} <div class="container"> {% for item in object_list %} <div class="alert alert-success" role="alert"> <p>テーブル番号 : {{ item.tablenumber }}</p> <p>お会計 : <a href="{% url 'bill' item.pk %}">{{ item.bill }}</a></p> <p>消費税 : <a href="{% url 'tax' item.pk %}">{{ item.tax_total }}</a></p> <p>投稿時間 : {{ item.date }}</p> <p>売上合計 : {{item.sales_total}}</p> <a href="{% url 'detail' item.pk %}" class="btn btn-primary" role="button" aria-pressed="true">詳細画面へ</a> <a href="{% url 'delete' item.pk %}" class="btn btn-success" role="button" aria-pressed="true">削除画面へ</a> <a href="{% url 'update' item.pk %}" class="btn btn-info" role="button" aria-pressed="true">編集画面へ</a> </div> {% endfor %} </div> {% endblock content %}
model.py class SalesModel(models.Model): tablenumber = models.CharField('テーブル番号', max_length=100) girlsdrink_confirmation = models.CharField('ドリンク別か込みか', max_length=50, choices=CHOICES) tax_confirmation = models.CharField('TAXありかなしか', max_length=50, choices=CHOICES2) tablecharge = models.IntegerField('セット料金') custermer = models.IntegerField('お客さんの人数') girlsdrink_count = models.IntegerField('ドリンクの杯数') staff_reservation_fee = models.IntegerField('指名料', null=True, blank=True) champagne_fee = models.IntegerField('シャンパン料金', null=True, blank=True) tax_total = models.IntegerField(null=True, blank=True) bill = models.IntegerField('お会計', null=True, blank=True) sales = models.IntegerField(null=True, blank=True) date = models.DateTimeField(default=timezone.now) singlecharge = models.IntegerField('シングルチャージ', null=True, blank=True) sales_total = models.IntegerField('売上', null=True, blank=True, default=0)
試したこと
試したことは、Sum関数を下記ようにインポートし、aggregateを使って合計値を出そうとしたのですが,この先どのようにしたら良いかわからず断念してしまいました。 プログラミングも始めたばかりで、djangoも初心者なので、皆様の力添えをよろしくお願いします。
from django.db.models import Sum obj = Salesmodel.objects.aggregate(total_price=Sum("bill"))
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/10 05:05
2020/12/10 23:54 編集