Django-分组数据并显示选项';模板中的名称

Django-分组数据并显示选项';模板中的名称,django,django-models,django-templates,django-queryset,Django,Django Models,Django Templates,Django Queryset,我正在尝试创建一个饼图(chart.js)。我的目标是对标题进行分组,并在图表中按标题显示有多少人在工作 型号.py class人员(models.Model): name=models.CharField(最大长度=30) 姓氏=models.CharField(最大长度=20) titles=models.IntegerField(选项=((1,“研究员”),(2,“技术人员”),(3,“支持人员”),默认值=1) 定义(自我): 返回f“{self.name},{self.names}”

我正在尝试创建一个饼图(chart.js)。我的目标是对标题进行分组,并在图表中按标题显示有多少人在工作

型号.py

class人员(models.Model):
name=models.CharField(最大长度=30)
姓氏=models.CharField(最大长度=20)
titles=models.IntegerField(选项=((1,“研究员”),(2,“技术人员”),(3,“支持人员”),默认值=1)
定义(自我):
返回f“{self.name},{self.names}”
类元:
db_table=“个人”
详细的名称复数=“Ar Ge Personeller”
视图.py

def索引(请求):
personel_titles=personel.objects.values('titles')。注释(Count('titles'))
上下文={
“个人头衔”:个人头衔,
}
返回呈现(请求'core/index.html',上下文)
打印(个人头衔) >>>{'titles':1,'titles\u count':10} {'titles':2,'titles\u count':11} {'titles':3,'titles\u count':3}> 对我来说没关系,我只需要在这里。但我不知道如何在模板(也在图表标签中)中显示标题的名称

模板

{% for title in personel_titles %}<p>{{ title.get_titles_display }}</p>{% endfor %}
{personel_titles%}中的标题百分比{{title.get_titles_display}

{%endfor%}

我错过了什么?如何在值中返回选项的名称?

这里需要一些技巧,因为Group By表达式是在数据库级别执行的,而get\u FOO\u display()方法是在python级别执行的

因此,在将值发送到模板之前,需要将显示值附加到上下文,如下所示:

def index(request):
    personel_titles = Personel.objects \
        .values('titles') \
        .annotate(Count('titles'))
    
    for title in personel_titles:
        title["titles_display"] = Personel(titles=title["titles"]).get_titles_display()

    context = {
        "personel_titles": personel_titles,
    }
    return render(request, 'core/index.html', context)
def索引(请求):
personel_titles=personel.objects\
.值(“标题”)\
.注释(计数(“标题”))
个人头衔中的头衔:
title[“titles\u display”]=个人(titles=title[“titles”])。获取titles\u display()
上下文={
“个人头衔”:个人头衔,
}
返回呈现(请求'core/index.html',上下文)
然后在模板中

{% for title in personel_titles %}
    <p>{{ title.titles_display }} --- {{ title.titles__count }}</p>
{% endfor %}
{个人标题中标题的百分比%}
{{title.titles\u display}}--{{title.titles\u count}


{%endfor%}
这里需要一些技巧,因为Group By表达式是在数据库级别执行的,而get\u FOO\u display()方法是在python级别执行的

因此,在将值发送到模板之前,需要将显示值附加到上下文,如下所示:

def index(request):
    personel_titles = Personel.objects \
        .values('titles') \
        .annotate(Count('titles'))
    
    for title in personel_titles:
        title["titles_display"] = Personel(titles=title["titles"]).get_titles_display()

    context = {
        "personel_titles": personel_titles,
    }
    return render(request, 'core/index.html', context)
def索引(请求):
personel_titles=personel.objects\
.值(“标题”)\
.注释(计数(“标题”))
个人头衔中的头衔:
title[“titles\u display”]=个人(titles=title[“titles”])。获取titles\u display()
上下文={
“个人头衔”:个人头衔,
}
返回呈现(请求'core/index.html',上下文)
然后在模板中

{% for title in personel_titles %}
    <p>{{ title.titles_display }} --- {{ title.titles__count }}</p>
{% endfor %}
{个人标题中标题的百分比%}
{{title.titles\u display}}--{{title.titles\u count}

{%endfor%}