【问题标题】:Django - Grouping data and showing the foreignkey's name in templateDjango - 分组数据并在模板中显示外键的名称
【发布时间】: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 %}&lt;p&gt;{{ dep.get_respons_display }}&lt;/p&gt;{% endfor %}

我错过了什么?我瘦了.values 是我的问题。在这种情况下,有什么方法可以显示部门名称或在图表标签中显示部门名称的简单方法?

【问题讨论】:

  • 你可以试试Personel.objects.values('department', 'department__name').annotate(Count('department')) 吗?您应该可以在模板中使用 dep.department__name 访问它。
  • 感谢您的评论。你是对的。
  • 我写它作为答案。你介意验证它吗?谢谢。

标签: django django-models django-templates django-queryset


【解决方案1】:

在您看来,您可以这样查询外键:

def index(request):
    personel_dep = Personel.objects.values('department', 'department__name').annotate(Count('department'))
    context = {
        "personel_dep" : personel_dep,
    }
    return render(request, 'core/index.html',context)

然后,在您的模板中,您可以通过以下方式访问它:

{% for dep in personel_dep %}
    <p>{{dep.department__name}}</p>
{% endfor %}

【讨论】:

    猜你喜欢
    • 2021-04-03
    • 1970-01-01
    • 2016-09-14
    • 2011-04-27
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多