Django - модель, которая имеет счетчик в поле CHOICES

Джанго 2.1, Питон 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 ответа

В вашей ситуации я не думаю, что было бы целесообразно хранить count домов в модели. Если вы хотите получить count, просто сделайте это, используя count ():

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

Вы можете создать поле выбора в своей модели, а не хранить каждый счет. Обновить вас 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()
Другие вопросы по тегам