模型中的附加计算字段

时间:2011-02-12 09:45:39

标签: python django django-models

我的Django应用程序中有两个简单的模型。这是他们的样子:

class Host(models.Model):
    url = models.URLField(max_length= 200)
    ssl = models.BooleanField(default = False)

class Query(models.Model):
    host = models.ForeignKey(Host)
    date = models.DateTimeField(auto_now_add = True)
    latency = models.FloatField(null = True)
    success = models.BooleanField(default = False)
    error = models.CharField(max_length= 2000, null = True)

当我访问Host模型时,我只能访问两个字段urlssl。在查询Host模型时,我想要计算三个额外字段并返回dyanmicaly。这些是average_latency,它将是所有子Query记录的非空延迟字段的平均值,因此我可以像这样访问它:

t = Tracker.objects.get(id = 1)
t.url
t.average_latency

有人可以解释一下我是如何做到这一点的,还是请给我一些示例/文档?

谢谢。

2 个答案:

答案 0 :(得分:2)

您可以使用class properties

class Host(models.Model):
    .
    .
    .
    @property
    def average_latency(self):
        # calculate latency from Query model ...
        return latency

请记住,这是一个只读属性。

答案 1 :(得分:1)

您可以查看django-denorm,这几乎就是您要实现的目标。我也有一些闪回,还有其他类似的django应用程序。