У меня есть две модели, подобные этой:
class KPI(models.Model):
"""KPI model to hold the basic info on a Key Performance Indicator"""
title = models.CharField(blank=False, max_length=100)
description = models.TextField(blank=True)
target = models.FloatField(blank=False, null=False)
group = models.ForeignKey(KpiGroup)
subGroup = models.ForeignKey(KpiSubGroup, null=True)
unit = models.TextField(blank=True)
owner = models.ForeignKey(User)
bt_measure = models.BooleanField(default=False)
class KpiHistory(models.Model):
"""A historical log of previous KPI values."""
kpi = models.ForeignKey(KPI)
measure = models.FloatField(blank=False, null=False)
kpi_date = models.DateField()
и я использую RGraph для отображения статистики на внутренних настенных панелях. Удобно то, что списки Python выводятся в формате, который Javascript рассматривает как массив, поэтому путем сопоставления всех значений в списке как это:
def f(x): return float(x.measure)
stats = map(f, KpiHistory.objects.filter(kpi=1)
тогда в шаблоне я могу просто использовать
{{ stats }}
и код RGraph видит его как массив, который является именно тем, что я хочу.
[87.0, 87.5, 88.5, 90]
Таким образом, мой вопрос заключается в следующем: есть ли способ добиться того же эффекта, используя функцию _set Django, чтобы сохранить объем данных, которые я передаю в шаблон, до тех пор, пока я не передавал один объект KPI? чтобы быть в графике, но теперь я хочу передать целую кучу, так что я могу сделать что-нибудь с _set
{{ kpi.kpihistory_set }}
выводит всю модель, но я просто хочу поле измерения.
Я не вижу ни одного из встроенных шаблонных методов, которые позволили бы мне выделить только одно поле, которое я хочу.
Как другие люди справились с этой ситуацией?