Tengo el siguiente modelo:
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) Lleno el modelo a través python manage.py loaddata db.json (accesorio JSON)
Después de completar el modelo, me gustaría usar esas regiones y países como "opciones" para otro campo modelo.
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 ) Investigué un poco y tengo claro cómo usar las opciones de un archivo constants.py , pero no he encontrado una buena explicación sobre cómo usarlo con modelos poblados anteriores.
Dado que los Countries ya contienen sus datos, utilice models.ForeignKey from Project to Countries para que pueda seleccionar una entrada existente.
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) El método __str__ de Countries es lo que se usa como etiqueta para el menú desplegable del campo de formulario seleccionado de forma predeterminada