Нет, вы можете ссылаться на любое уникальное поле модели Django.Поэтому, если ваши модели выглядят так:
class Target(models.Model):
name = models.CharField(max_length=128<b>, unique=True</b>)
class SourceModel(models.Model):
target = models.ForeignKey(Target<b>, to_field='name'</b>, on_delete=models.CASCADE)
Вы можете присвоить значение целевого столбца для target_id
.Например:
Target.objects.create(name='target1')
SourceModel.objects.create(target_id='target1')
Таким образом, вам не нужно передавать сам объект Target
.Вы можете использовать поле …_id
"twin", чтобы использовать значение целевого столбца.База данных обычно обеспечивает ссылочную целостность и, таким образом, предотвращает передачу несуществующего значения в столбец внешнего ключа.