🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

1430閲覧

querysetをhtml上で表示したい

uyuki

総合スコア1

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/12/08 10:41

編集2020/12/08 12:44

お世話になります。初心者ですので、初歩的なミスをしているかもしれないのですが、どうしても状況が改善しないので、お力をお貸しください。

イメージ説明

前提・実現したいこと

実現したいことは、お会計の足した値をhtml上に表示したいです。
table1の方ですと、売上合計:22000
table2の方ですと、売上合計:45100

コードは下記のように書きました。

view.py def sales_total(request): queryset = SalesModel.objects.all().filter(pk__gte=1) b = 0 for i in queryset: b += i.bill i.sales_total = b print(i.sales_total) return render(request, 'list.html', {'queryset' : queryset})
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> {% for i in queryset %} <p>売上合計 : <a href="{% url 'sales_total' %}">{{ i.sales_total }}</a></p> {% endfor %} <p>投稿時間 : {{ item.date }}</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 %} {% 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)
urls.py from django.urls import path from .views import billfunc, taxfunc, SalesCreate,detailfunc, HomeClass, SalesDelete, SalesUpdate, SaleList, sales_total urlpatterns = [ path('', HomeClass.as_view(), name='home'), path('list/', SaleList.as_view(), name='list'), path('bill/<int:pk>', billfunc, name='bill'), path('tax/<int:pk>', taxfunc, name='tax'), path('create/', SalesCreate.as_view(), name='create'), path('detail/<int:pk>', detailfunc, name='detail'), path('delete/<int:pk>', SalesDelete.as_view(), name='delete'), path('update/<int:pk>', SalesUpdate.as_view(), name='update'), path('sales_total/', sales_total, name='sales_total'), ]
試したこと

DjangoでDB(モデル)の値を画面に表示させたい
こちらの方と同じ内容だと思い、参考にしてみましたが、うまくいきませんでした。

補足情報(FW/ツールのバージョンなど)

{% 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> <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> {% endfor %} </div> {% for i in queryset %} <p>売上合計 : <a href="{% url 'sales_total' %}">{{ i.sales_total }}</a></p> {% endfor %}

list.html上に表記したコードですと{% for item in object_list %}
のfor文と{% for i in queryset %}のfor文が重なってしまうと考えたため、重ならないように上記のようなコードにしたのですが、どちらも表示されませんでした。

表示したい箇所は、list.html上に表記したように消費税のしたに売上合計を表示したいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

attakei

2020/12/08 11:23

それぞれのテーブルの会計情報がSalesModelにあって、 - それぞれのデータごとに合計値を出したい - QuerySet全体で取ったデータの合計値を出したい のどちらかの話でしょうか? というのも、画像と質問欄の↓の説明だけを読む限り、 どういう計算式で出そうとしているのかがイマイチわかりませんでした。 > table1の方ですと、売上合計:22000 (table1の会計がこの数値だが...? > table2の方ですと、売上合計:45100 (table1,2の会計を合計している?
uyuki

2020/12/08 11:29

回答ありがとうございます。 QuerySet全体で取ったデータの合計値を出したいです。 おっしゃる通りで table1の方ですと、table1の会計しか存在しないため、売上合計も会計の数値で問題なく、 table2の方ですと、table1,2の会計を合計した値を出したいです。
uyuki

2020/12/08 11:41

計算式の方は、filterを使ってpkの値が1以上のデータを取得し、取ってきたデータをfor文によって、SalesModelの変数を一つ一つに分解し、その後、お会計の変数がbillのため、存在しているbillのデータを足し合わせていく計算式をviews.pyの方で書いたつもりです。 理解しづらいコードで申し訳ございません。
attakei

2020/12/08 11:59

手元でviewロジックが同じ状態で表示を試した範囲では、テンプレートのループ内でsales_totalには積み上がっていく数字が表示されているので、動作上は問題ないような感じがします。 (少なくとも、10000,20000,30000のデータに対して10000,30000,60000の表示は出来た) 一度、list.html全体を掲載してもらって「どの領域にどう出そうとしているのか」を編集で追記してもらえますか。
uyuki

2020/12/08 12:45

丁寧に対応していただきありがとうございます。返事が遅れてしまい申し訳ございません。 list.html全体を掲載させていただきました。
guest

回答1

0

もしかしたらですが

SaleListビューとsales_totalビューとまとめて仕舞えばいいのでは。

結局、sales_totalでやってることはListViewと変わらないですよね。

投稿2020/12/12 16:22

yaha4967

総合スコア106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問