我有一个包含“用户名”和“成绩”的表格。成绩的格式为 A+、A、A-、B+ 等。我正在尝试用数值显示每个用户的总成绩。例如:
约翰 A+
杰瑞 B+
约翰 C-
汤姆 A-
杰瑞 B+
因此,如果 A+ = 10 以及 A =9 和 A- =8 等之后的所有其他内容,我如何计算 John 获得的总成绩。我试图在 DJANGO 模板 (.html) 文件中执行此操作,但似乎根本无法实现计数器
最佳答案
您可以为此编写自己的模板过滤器。在模板文件夹中名为“templatetags”的文件夹中创建一个名为“grade_filters.py”的新 python 文件,并声明一个新的模板标签,如下所示:
from django import template
register = template.Library()
def grade_to_number(grade):
map_dict = {'A+': 10, 'A':9, 'A-':8}
if grade in map_dict:
return map_dict[grade]
else:
return 0
@register.filter(name='sum_of_grades')
def return_item(grade_list):
new_grades_list = [grade_to_number(grade) for grade in grade_list]
try:
return sum(new_grades_list)
except:
return 0
@register.filter(name='get_list_for_student')
def return_item(student_list, name):
return student_list.filter(name=name)
现在,在您的模板中,您可以加载新的模板标签
{% load grade_filters %}
计算一个学生的总成绩:
{{ gradelist|get_list_for_student:'John'|sum_of_grades }}
关于python - 在 DJANGO 模板中总结数据库中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25611216/