Django - модель, которая имеет счетчик в поле CHOICES - PullRequest
0 голосов
/ 04 января 2019

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 голосов
/ 04 января 2019

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

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

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