Множественный выбор в модели

ANIMALS = (('dog','dog'), ('cat','cat'))

class Owner(models.Model):
    animal = models.Charfield(choices=ANIMALS, max_length=10)

Моя проблема в том, как я могу сделать, если у меня есть и то и другое?

Вам необходимо иметь модель, подобную этой:

class Choices(models.Model):
  animal = models.CharField(max_length=20)

class Owner(models.Model):
    animal = models.ManyToManyField(Choices)

Предположительно, лучшим решением будет подумать о том, как вы собираетесь хранить данные на уровне базы данных. Это будет диктовать ваш подход и, следовательно, ваше решение. Вам нужен один столбец, в котором хранится несколько значений, поэтому лучшим подходом будет использование django-multiselectfield

from multiselectfield import MultiSelectField

MY_CHOICES = ((1, 'Item title 2.1'),
              (2, 'Item title 2.2'),
              (3, 'Item title 2.3'),
               (4, 'Item title 2.4'),
               (5, 'Item title 2.5'))

class MyModel(models.Model):
    my_field = MultiSelectField(choices=MY_CHOICES,
                                 max_choices=3,
                                 max_length=3)
Вернуться на верх