Как использовать в модели варианты выбора из таблицы, предварительно заполненной приспособлением

У меня следующая модель:

class Countries(models.Model):
    region = models.CharField(max_length=250, null=False, blank=False)
    country = models.CharField(max_length=250, null=False, blank=False, unique=True)

Я заполняю модель через python manage.py loaddata db.json (JSON-фиксатор)

После заполнения модели я хотел бы использовать эти регионы и страны как "опции" для другого поля модели

class Project(models.Model):
    project_code = models.CharField(max_length=250, null=False, blank=False)
    status = models.CharField(#when creating a new project: default - active
        max_length=250, 
        null=True, 
        blank=True, 
        default=PROJECT_STATUS_DEFAULT,
        choices=PROJECT_STATUS,
    )
    region = models.CharField(
        max_length=250, 
        null=False, 
        blank=False, 
        default=, #I would like to use here the options available in the Countries model
        choices=, #I would like to use here the options available in the Countries model
    )
    country = models.CharField(
        max_length=250, 
        null=False, 
        blank=False,
        default=, #I would like to use here the options available in the Countries model
        choices=  #I would like to use here the options available in the Countries model
    )

Я провел некоторое исследование, и мне ясно, как использовать выбор из файла constants.py, но я не нашел хорошего объяснения того. как использовать его с предыдущими населенными моделями.

Поскольку Countries уже содержит ваши данные, используйте models.ForeignKey от Project к Countries, чтобы вы могли просто выбрать существующую запись.

class Countries(models.Model):
    region = models.CharField(max_length=250, null=False, blank=False)
    country = models.CharField(max_length=250, null=False, blank=False, unique=True)

    def __str__(self):
        return f'{self.region} - {self.country}'


class Project(models.Model):
    project_code = models.CharField(max_length=250, null=False, blank=False)
    status = models.CharField(#when creating a new project: default - active
        max_length=250, 
        null=True, 
        blank=True, 
        default=PROJECT_STATUS_DEFAULT,
        choices=PROJECT_STATUS,
    )
    country = models.ForeignKey(Countries, on_delete=models.PROTECT)

Метод __str__ Countries по умолчанию используется в качестве метки для выпадающего поля формы select

Вернуться на верх