2014-01-23 49 views
0

的相关对象我有3种型号:计数相关对象

  • 大厦
  • 升级

升级不断被升级建筑物的轨道。

class Town(models.Model): 
    user = models.ForeignKey(User) 
    name = models.CharField(max_length=63) 


class Building(models.Model): 
    template = models.ForeignKey(BuildingTemplate, related_name='building_template') 
    town = models.ForeignKey(Town) 
    level = models.IntegerField() 


class Upgrade(models.Model):  
    building = models.ForeignKey(Building) 
    timer = models.DateTimeField() 

现在我想要统计一个城镇升级建筑的数量。现在我想我可以用一些for循环来做到这一点,但我想知道是否没有更好的方式使用Django API。

+1

https://docs.djangoproject.com/en/dev/topics/db/aggregation/#aggregation – dm03514

+0

不知道对这里的数据结构。对于有多个升级版的建筑来说,这意味着什么? –

+0

好问题,我可能会把它包括在建筑物本身中。另一方面,我不知道如果我想要一个建筑物能够一次升级2件东西。所以我现在把它分开了。也许不是最好的 –

回答

1

,如果他们有多次升级以前的答案将在同一建筑物内多次计数。使用这个来代替:

count = Building.objects.filter(town=town).exclude(upgrade=None).count() 
0

我发现了与链接的文档,这对我的作品:

count = Upgrade.objects.filter(building__town=building.town).count()