模型的哪个特定字段在Django的orm中的外键下被引用?

问题描述 投票:1回答:1

我有两个类'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()
django-models
1个回答
0
投票

您可以在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],它将使用目标模型的主键。

© www.soinside.com 2019 - 2024. All rights reserved.