我的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
模型时,我只能访问两个字段url
和ssl
。在查询Host
模型时,我想要计算三个额外字段并返回dyanmicaly。这些是average_latency
,它将是所有子Query
记录的非空延迟字段的平均值,因此我可以像这样访问它:
t = Tracker.objects.get(id = 1)
t.url
t.average_latency
有人可以解释一下我是如何做到这一点的,还是请给我一些示例/文档?
谢谢。
答案 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应用程序。