Django-每个CHOICES字段都有计数的模型

时间:2019-01-04 03:32:27

标签: django django-models django-model-field

django 2.1,python 3.6

比方说,我有一套东西['house_1','house_2',...],我想要一个模型,其中包含每个项目的计数。我以为它看起来像下面的样子。

class Card(models.Model):
    house_1_count = models.IntegerField(...
    house_2_count = models.IntegerField(...
    house_3_count = models.IntegerField(...

有没有一种方法可以转换此模型,以便对项目进行硬编码。就像使用CHOICES字段一样。列表中的项目可能会(缓慢)更改,但是我不想每次发生时都在模型中创建一个字段。

2 个答案:

答案 0 :(得分:0)

在您的情况下,我认为将count房屋存储在模型中并不明智。如果您想获得计数,只需使用 count()

House.objects.filter(house_type=1).count()

答案 1 :(得分:0)

您可以在模型中创建选择字段,而不是存储每个计数。 更新您的card模型:

class Card(models.Model):
    house = models.IntegerField(choices=list(zip(range(1, 4), range(1, 4))), max_length=1)

要计算房屋类型特殊的卡,请使用count()

Card.objects.filter(house=1).count()