Django models django'中的外键引用了模型的哪个特定字段;什么是orm?
我有两个类“topics”和“webpage”,我正在尝试将webpage.category指定为引用topics.top\u名称的外键 但与原始sql不同,在原始sql中,外键可以引用另一个表中的特定字段,在django的orm中,我们只提供引用的类(表)名称,而不是FK引用的特定字段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
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_字段
,它将使用目标模型的主键