Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 对相关对象的相关对象进行计数_Django_Count - Fatal编程技术网

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()

不确定这里的数据结构。一栋建筑进行多次升级意味着什么?好问题,我可能已经在建筑本身中包含了这一点。另一方面,我还不确定我是否希望一栋建筑能够同时升级两个东西。所以我暂时把它分开。也许不是最好的电话