Как использовать в модели варианты выбора из таблицы, предварительно заполненной приспособлением
У меня следующая модель:
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