首页 > 解决方案 > 在 django 模型中的表之间链接外键

问题描述

我刚开始使用 Django,所以请帮助我解决我的疑问。目前,我有三个表 Topic、Webpage 和 AccessRecord。在第三个表AccessRecord中,我将 ForeignKey 与第二个表Webpage一起使用。但是网页表有三个属性主题、名称和 URL ..所以我怀疑这三个属性中的哪个属性将被视为AccessRecord表的外键。任何帮助将不胜感激。

class Topic(models.Model):

    top_name = models.CharField(max_length=264,unique = True)

    def __str__(self):

        return(self.top_name)

class Webpage(models.Model):

    topic = models.ForeignKey(Topic,on_delete=models.CASCADE)
    name = models.CharField(max_length=264,unique=True)
    url = models.URLField(unique=True)

    def __str__(self):

        return self.name

class AccessRecord(models.Model):

    name = models.ForeignKey(Webpage,on_delete=models.CASCADE)
    date = models.DateField()

    def __str__(self):
        return str(self.date)

标签: djangodjango-models

解决方案


实际上,ForeignKey 关系是 fromAccessRecordWebpageobject,它只存在于AccessRecord. Webpagea与AccessRecord object之间没有直接关系。相反,django 提供了一个可以reverse relationship对象访问查询集的地方。像这样:AccessRecordWebpage

webpage = Webpage.objects.first()  # an object
records = webpage.accessrecord_set.all() # a queryset

如果您遍历records上面给出的变量,您将获得AccessRecord对象。像这样:

for record in records:
    print(record) # an AccessRecord object

推荐阅读