前提・実現したいこと
マッサージ院などの"治療院"の内部的な口コミを投稿するwebアプリを作成しています。
openworkの様な社員が会社の評価をするものの治療院verになります。
全ての治療院の一覧を表示するページに
それぞれの治療院への口コミの平均を表示したいと考えています。
発生している問題
それぞれの治療院の口コミの平均を割り出す機能を作成し、表示できるようにしたのですが
他の処理を作成し、一通り動きを確認した際に結果が一切表示されなくなってしまいました。
エラーメッセージなどは確認されず、html内のfor文の内容だけが表示されていない状態です。
該当のソースコード
views.py
views.py
1from django.shortcuts import render,get_object_or_404,redirect 2from django.http import HttpResponse 3from django.template import loader 4from .form import ClinicForm ,ReputationForm 5from .models import Clinic ,Reputation 6from django.views.generic import ListView 7 8import numpy as np 9import matplotlib.pyplot as plt 10 11def all_clinics(request): 12 all_clinics = Clinic.objects.all() 13 all_ave_list = [] 14 cli_rep_list = [] 15# 全ての治療院の平均評価の割り出し 16 for clinic in all_clinics: 17 reputations = Reputation.objects.all().filter(clinic_id=clinic.id) 18 if reputations == "": 19 all_ave_list = all_ave_list + "まだ評価がありません!" 20 else: 21 ave_list = [] 22 condition_list = [] 23 staff_list = [] 24 ven_list = [] 25 respect_list = [] 26 growth_list = [] 27 manage_list = [] 28 eva_list = [] 29 comp_list = [] 30 31 for rep in reputations: 32 condition_list.append(rep.condition) 33 staff_list.append(rep.staff) 34 ven_list.append(rep.ventilation) 35 respect_list.append(rep.respect) 36 growth_list.append(rep.growth) 37 manage_list.append(rep.management) 38 eva_list.append(rep.evaluation) 39 comp_list.append(rep.compliance) 40 41 con_ave = np.average(condition_list) 42 staff_ave = np.average(staff_list) 43 ven_ave = np.average(ven_list) 44 respect_ave = np.average(respect_list) 45 growth_ave = np.average(growth_list) 46 manage_ave = np.average(manage_list) 47 eva_ave = np.average(eva_list) 48 comp_ave = np.average(comp_list) 49 ave_list =[con_ave,staff_ave,ven_ave,respect_ave,growth_ave,manage_ave,eva_ave,comp_ave] 50 average_rep = np.average(ave_list) 51 all_ave_list = all_ave_list + average_rep 52 #ここまで 53 54 for c,r in zip(all_clinics,all_ave_list): 55 cli_rep_list = cli_rep_list + [c.id,c.clinic_name,c.directer_name,c.address,c.phone_num,c.homepage,r] 56 57 58 context = {'cli_rep_list':cli_rep_list} 59 return render(request,'clinic/all_clinics.html',context)
下記for文の内容だけが表示されず、h2のタグ内や、for文後のaタグは表示されています。
all_clinics.html
all_clinics.html
1{% extends "base.html" %} 2 3{% block body %} 4 5<h2 class="mct">すべての治療院</h2> 6{% for c in cli_rep_list %} 7<div class="card mcb text-left mb-3 w-100 rounded"> 8 <div class="card-header"><a class="mct" href="{% url 'detail_clinic' c.0 %}">{{ c.1 }}</a></div> 9 <div class="card-body "> 10 <p class="card-text"> 11 評価:{{ c.6 }}<br> 12 代表者:{{ c.2 }}<br> 13 住所:{{ c.3 }}<br> 14 電話番号:{{ c.4 }}<br> 15 HP:{{ c.5 }}<br> 16 </p> 17 <a class="btn mcb mct" href="{% url 'detail_clinic' c.0 %}">詳しくみてみる</a> 18 </div> 19</div> 20{% endfor %} 21<div class="text-center"> 22<a class="btn btn-info text-light" href="{% url 'new_clinic' %}">新しく治療院を登録する</a> 23</div> 24{% endblock %}
試したこと
処理が間違っていると思い、下記のindexと同じ内容で表示されるか確認。
def index(request): all_clinics = Clinic.objects.all().order_by('id')[:5] context = {'all_clinics':all_clinics} return render(request,'clinic/index.html',context)
def index → def all_clinics
index.html → all_clinics.html
上記に変更しても表示されませんでした。
該当のfor文内の処理を
for i in [1,2,3,4,5]: print(i)
のような簡素なものにするも表示されませんでした。
###解決したいこと
今回投稿した内容について知りたいことは
for文内の処理が一切表示されない理由はどこにあるのか?
というところです。
all_clinics内の処理が違えば整えられると思うのですが
for文内だけ表示されないのがどうにもつかめないところです。
元々、indexの処理と同じ内容だったのを上記処理に変更し
問題なく表示できていたのですが、、、
原因がつかめなく困っております。
補足情報(FW/ツールのバージョンなど)
Django = 3.0.4
Python = 3.8.2
今回、初めての投稿になります。
不足している情報、意味がわかりづらいなどありましたら
遠慮なく仰っていただけると幸いです。
よろしくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/13 01:27