【发布时间】:2011-08-05 10:14:37
【问题描述】:
这是我的模型结构的样子:
class Visitor(models.Model):
id = models.AutoField(primary_key=True)
class Session(models.Model):
id = models.AutoField(primary_key=True)
visit = models.ForeignKey(Visitor)
sequence_no = models.IntegerField(null=False)
class Track(models.Model):
id = models.AutoField(primary_key=True)
session = models.ForeignKey(Session)
action = models.ForeignKey(Action)
when = models.DateTimeField(null=False, auto_now_add=True)
sequence_no = models.IntegerField(null = False)
class Action(models.Model):
id = models.AutoField(primary_key=True)
url = models.CharField(max_length=65535, null=False)
host = models.IntegerField(null=False)
如您所见,每个Visitor 都有多个Sessions;每个Session 有多个Tracks,每个Track 有一个Action。曲目始终按session 和sequence_no 升序排列。 Visitors 在站点上的平均时间(即特定的Action.host)是最高和最低Track.sequence_no 之间的Track.when(时间)的差异除以Visitor 的Sessions 的数量。
我需要计算网站访问者的平均时间,即Action.site 上每个访问者的时间总和除以访问者数量。
我可以使用 SQL 进行查询,但我希望我的查询尽可能使用 Djangonic,但我仍然对复杂的查询感到很困惑。
【问题讨论】:
标签: django django-models django-queryset