2014-01-23 83 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()