【发布时间】:2021-04-01 05:46:45
【问题描述】:
我正在尝试创建一个饼图 (chart.js)。我的目标是对部门进行分组,并在饼图中按部门显示有多少人工作。
Models.py
class Personel(models.Model):
name = models.CharField(max_length=30)
surName = models.CharField(max_length=20)
department = models.ForeignKey(DepartmentList, on_delete=models.SET_DEFAULT, default=0, related_name="PersonelDepartman")
def __str__(self):
return f"{self.name},{self.surName}"
class Meta:
db_table = "personel"
verbose_name_plural = "Ar-Ge Personeller"
class DepartmentList(models.Model):
name = models.CharField(max_length=50)
def __str__(self):
return self.name
class Meta:
db_table = "DepartmentList"
verbose_name_plural = "Departman Listesi"
Views.py
def index(request):
personel_dep = Personel.objects.values('department').annotate(Count('department'))
context = {
"personel_dep" : personel_dep,
}
return render(request, 'core/index.html',context)
>>> print(personel_dep)
>>> <QuerySet [{'department': 1, 'department__count': 5}, {'department': 2, 'department__count': 5}, {'department': 3, 'department__count': 3}, {'department': 4, 'department__count': 3}, {'department': 5, 'department__count': 3}, {'department': 6, 'department__count': 4}, {'department': 7, 'department__count': 1}]>
对我来说没问题,我需要的都在这里。但我不知道如何在模板中显示部门名称(也在图表标签中)
模板
{% for dep in personel_dep %}<p>{{ dep.department }}</p>{% endfor %}
如果我使用; personel_dep = Personel.objects.filter(rdfinisDate__isnull=True)
我可以将模板中的名称设为{% for dep in personel_respons %}<p>{{ dep.get_respons_display }}</p>{% endfor %}
我错过了什么?我瘦了.values 是我的问题。在这种情况下,有什么方法可以显示部门名称或在图表标签中显示部门名称的简单方法?
【问题讨论】:
-
你可以试试
Personel.objects.values('department', 'department__name').annotate(Count('department'))吗?您应该可以在模板中使用 dep.department__name 访问它。 -
感谢您的评论。你是对的。
-
我写它作为答案。你介意验证它吗?谢谢。
标签: django django-models django-templates django-queryset