【发布时间】:2020-11-02 13:58:56
【问题描述】:
我有以下 django 视图来查找问卷的平均分数。
@login_required
def statistics(request, slug=False):
qn = get_object_or_404(Questionnaire, slug=slug)
questions = Question.objects.filter(questionnaire=qn).count()
qs = Question.objects.filter(questionnaire=qn)
responses = Response.objects.filter(question__in=qs, user=request.user).count()
if questions == 0 or responses == 0 or not questions <= responses:
return render(request, "questionnaire/stats.html")
out = {}
for q in qs:
response = Response.objects.filter(question=q, user=request.user).order_by("session_datetime").first()
out[q.category] = {}
time = response.session_datetime
time_string = time.strftime("%d/%m/%Y")
out[q.category][time_string] = []
responses_in_time = Response.objects.filter(question=q, user=request.user, session_datetime__gte=time,
session_datetime__lt=time + datetime.timedelta(hours=24))
for res in responses_in_time:
out[q.category][time_string] += [res.value]
print(out)
for category in out.keys():
print("outcat"+ str(out[category]))
for time in out[category].keys():
out[category][time] = sum(out[category][time])/len(out[category][time])
print(out)
return render(request, "questionnaire/stats.html", context={"questionnaire": qn, "stats_json": json.dumps(out)})
我想知道是否有一种方法可以将字典与循环中的模型/记录中的时间放在一起而无需每次都重置它,如果我尝试 += 而不先创建它会抱怨但我不知道循环内的初始时间。
【问题讨论】:
标签: python python-3.x django list loops