質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
Django

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

Q&A

1回答

643閲覧

django models内の関数が呼び出せない

coredaa

総合スコア6

Django

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

0グッド

0クリップ

投稿2021/05/23 01:18

**models.py** コードclass OrderItem(models.Model): user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE) user_name = models.CharField(max_length=50,null=True,blank=True) user_email = models.CharField(max_length=50,null=True,blank=True) ordered = models.BooleanField(default=False) item = models.ForeignKey(Item,on_delete=models.CASCADE) quantity = models.IntegerField(default=1) order_day = models.DateField('注文日',default=timezone.now) store_name = models.CharField('店舗名',max_length=30,blank=True,null=True) def get_total_item_price(self):**呼び出せる** return int(self.quantity * self.item.price) def get_end_total(self):**これが呼び出せない** total = 0 for items in self.item: total += items.get_total_item_price() return total def __str__(self): return f'{self.item.title}:{self.quantity}' **views.py** class FindView(View): def get(self,request, *args, **kwargs): today = timezone.now() keyword = request.GET.get('keyword') order = OrderItem.objects.filter(store_name=keyword,order_day=today) context = { 'order' :order, } return render(request,'order/order_data.html',context) **templaet HTML** <v-simple-table class="mt-2"> <template v-slot:default> <thead class="pink lighten-5 font-weight-bold"> <tr> <th>日 付</th> <th>お名前</th> <th>店舗名</th> <th>商品名</th> <th>数 量</th> <th>小 計</th> </tr> </thead> <tbody> <tr>{% for order_data in order %} <td>{{ order_data.order_day }}</td> <td>{{ order_data.user }}</td> <td>{{ order_data.store_name }}</td> <td>{{ order_data.item.item.title }}</td> <td class="text-center">{{ order_data.quantity }}</td> <td class="text-right">{{ order_data.get_total_item_price|intcomma }}</td> </tr> {% endfor %} </tbody> <tr> <td></td> <td></td> <td></td> <td col="3"class="text-right"><h3>合計金額{{ order.get_end_total|intcomma }}円</h3> </td>**ここが表示できない** </tr> </template> </v-simple-table>

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

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

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

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

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

guest

回答1

0

order は、以下のようにViewで取得していますので、OrderItemの配列になります。

python

1 order = OrderItem.objects.filter(store_name=keyword,order_day=today)

そのため、OrderItem のメソッドを直接呼び出すことはできません。

get_total_item_price(){% for order_data in order %} によって配列の1つのモデルをorder_data に代入して実行しているので、正しく動作しています。

投稿2021/05/23 09:35

takyafumin

総合スコア2335

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問