django注释产品

时间:2014-04-06 20:14:34

标签: python django django-1.3

Django 1.3 Python 2.7

我有以下模型(省略了不相关的字段):

class Encounter(models.Model):
  subject = models.ForeignKey('Subject', to_field='uuid')
  uuid = models.SlugField(max_length=36, unique=True, default=make_uuid, editable=False)

class Subject(models.Model):
  uuid = models.SlugField(max_length=36, unique=True, default=make_uuid, editable=False)
  location = models.ForeignKey('Location', blank=True, to_field='uuid')

class Location(models.Model):
  uuid = models.SlugField(max_length=36, unique=True, default=make_uuid, editable=False)

我想知道每个地点发生了多少次遭遇。如果Encounter包含位置字段,我可以使用annotate(),但它没有,我无法添加一个。我目前通过annotate()了解每个主题的遭遇次数和每个地点的主题数量。我愿意将这些乘法相加,但我想知道a)如果有效,b)是否有更好的方法。

提前致谢!

1 个答案:

答案 0 :(得分:0)

似乎这应该有效:

Location.objects.annotate(encounter_count=Count('subject__encounter'))