我有两个类'topics'和'webpage',我正试图将webpage.category分配为引用topic.top_name的外键。
但是与原始sql不同,外键可以引用另一个表中的特定字段,在Django的orm中,我们只提供引用的类(表的)名称,而不是FK所引用的特定字段。
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)
name = models.CharField(max_length=264)
url = models.URLField()
您可以在to_field=…
[Django-doc]构造函数中设置to_field=…
:
ForeignKey
如文档中所指定,您所引用的字段应为unique(这当然是有道理的,因为否则它将是不明确的)。
请注意,通常,引用列和目标列的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, to_field='top_name', on_delete=models.CASCADE)
name = models.CharField(max_length=264)
url = models.URLField()
应该相同。否则,当两个字段相等时并不清楚。
如果不指定collation [mysql-doc],它将使用目标模型的主键。