Django models django'中的外键引用了模型的哪个特定字段;什么是orm?

Django models django'中的外键引用了模型的哪个特定字段;什么是orm?,django-models,Django Models,我有两个类“topics”和“webpage”,我正在尝试将webpage.category指定为引用topics.top\u名称的外键 但与原始sql不同,在原始sql中,外键可以引用另一个表中的特定字段,在django的orm中,我们只提供引用的类(表)名称,而不是FK引用的特定字段 class Topic(models.Model): top_name = models.CharField(max_length=264, unique=True) top_autho

我有两个类“topics”和“webpage”,我正在尝试将webpage.category指定为引用topics.top\u名称的外键

但与原始sql不同,在原始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()
您可以在
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, to_field='top_name', on_delete=models.CASCADE)
    name = models.CharField(max_length=264)
    url = models.URLField()
课程主题(models.Model):
top\u name=models.CharField(最大长度=264,唯一性=True)
top_author=models.CharField(最大长度=264)
班级网页(models.Model):
category=models.ForeignKey(主题,指向\u delete=models.CASCADE上的\u field='top\u name'))
name=models.CharField(最大长度=264)
url=models.URLField()
正如文档中所指定的,您引用的字段应该是唯一的(这当然是有意义的,否则,它将是不明确的)

请注意,通常,引用列和目标列的名称应该相同。否则,这两个字段何时相等并不完全清楚

如果您没有指定
to_字段,它将使用目标模型的主键。

您可以在
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, to_field='top_name', on_delete=models.CASCADE)
    name = models.CharField(max_length=264)
    url = models.URLField()
课程主题(models.Model):
top\u name=models.CharField(最大长度=264,唯一性=True)
top_author=models.CharField(最大长度=264)
班级网页(models.Model):
category=models.ForeignKey(主题,指向\u delete=models.CASCADE上的\u field='top\u name'))
name=models.CharField(最大长度=264)
url=models.URLField()
正如文档中所指定的,您引用的字段应该是唯一的(这当然是有意义的,否则,它将是不明确的)

请注意,通常,引用列和目标列的名称应该相同。否则,这两个字段何时相等并不完全清楚

如果未指定
to_字段
,它将使用目标模型的主键