Передайте в модель аргумент Django "to_field", два поля, которые имеют UniqueConstraint
Что я пытаюсь сделать, это иметь поле "dependencia" в модели Puesto как Charfield, чтобы использовать естественные ключи и передать, например, это "[NTRA. SRA. DE LA ASUNCION,Capital]" и это может быть отображено на модель Dependencia. Я передаю эти аргументы из JSON фикстуры.
Поскольку поля "descripcion" и "departamento" в "Dependencia" не могут иметь аргумент unique= True, я не могу использовать их для указания на эти поля и в итоге получаю "dependencia" на модели Puesto, преобразованную из int (поскольку указывает на поле id в dependencia, которое является PK), в Charfield.
Есть ли способ использовать ограничение "unico_nombre_pordpto", или передать поле descripcion и departamento в "to_field"? Какие у вас есть предложения? Заранее спасибо.
МОДЕЛЬНАЯ ЗАВИСИМОСТЬ
class DependenciaManager(models.Manager):
def get_by_natural_key(self, descripcion, departamento):
return self.get(descripcion=descripcion, departamento=departamento)
class Dependencia(models.Model):
descripcion = models.CharField(max_length=300, blank=False, null=False)
cod_institucion = models.PositiveIntegerField(
blank=True,
null=True,
)
departamento = models.ForeignKey(
Departamento,
on_delete=models.PROTECT,
blank=False,
null=True,
to_field="descripcion",
)
objects = DependenciaManager()
class Meta:
constraints = [
models.UniqueConstraint(
fields=["descripcion", "departamento"], name="unico_nombre_pordpto"
)
]
def natural_key(self):
return (self.descripcion, self.departamento)
def __str__(self):
return f"{self.descripcion}"
МОДЕЛЬ PUESTO
class Puesto(models.Model):
numero = models.PositiveIntegerField(blank=False, null=False, primary_key=True)
cargo = models.ForeignKey(
Cargo,
on_delete=models.PROTECT,
blank=False,
null=True,
to_field="descripcion_cargo",
)
dependencia = models.ForeignKey(
Dependencia,
on_delete=models.PROTECT,
blank=False,
null=True,
)
def __str__(self):
return f"{self.numero}"