Вы можете установить to_field=…
[Django-doc] в конструкторе ForeignKey
:
class Topic(models.Model):
top_name = models.CharField(max_length=264, unique=True)
top_author = models.CharField(max_length=264)
class Webpage(models.Model):
category = models.ForeignKey(Topic<b>, to_field='top_name'</b>, on_delete=models.CASCADE)
name = models.CharField(max_length=264)
url = models.URLField()
Как указано в документации,поле, на которое вы ссылаетесь, должно быть уникальным (что, конечно, имеет смысл, поскольку в противном случае оно будет неоднозначным).
Обратите внимание, что обычно сопоставление [mysql-doc] ссылочного столбца и целевого столбца должны совпадать. Иначе не совсем ясно, когда два поля равны.
Если вы не укажете to_field
, он будет использовать первичный ключ целевой модели.