Django 对相关对象的相关对象进行计数
我有三种型号:Django 对相关对象的相关对象进行计数,django,count,Django,Count,我有三种型号: 城镇 建筑 升级 升级跟踪正在升级的建筑 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'
- 城镇
- 建筑
- 升级
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是否有更好的方法。我从链接的文档中发现这对我来说是可行的:
count = Upgrade.objects.filter(building__town=building.town).count()
如果同一栋建筑有多次升级,前面的答案将多次计算。改用这个:
count = Building.objects.filter(town=town).exclude(upgrade=None).count()
不确定这里的数据结构。一栋建筑进行多次升级意味着什么?好问题,我可能已经在建筑本身中包含了这一点。另一方面,我还不确定我是否希望一栋建筑能够同时升级两个东西。所以我暂时把它分开。也许不是最好的电话