在模板中的_set上使用map()?

时间:2010-12-26 23:28:34

标签: python django django-templates

我有两个这样的模型:

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]

所以我的问题是,有什么方法可以使用Django的_set功能来保持我传入模板的数据量达到相同的效果,到目前为止我已经传入了一个KPI对象要绘制图形,但现在我想传递一大堆,所以我可以用_set

做任何事情
{{ kpi.kpihistory_set }}

转出整个模型,但我只想要测量字段。

我看不到任何内置模板方法可以让我只提取我想要的单个字段。

其他人如何处理这种情况?

1 个答案:

答案 0 :(得分:0)

您可能应该使用逻辑来决定应该在视图函数中的特定请求中显示哪些实例,而不是在模板中。

相关问题