【问题标题】:Django models class relationshipsDjango 建模类关系
【发布时间】:2018-02-24 23:34:43
【问题描述】:

在 django 模型中,我有 2 个类;国家和大陆。每个国家都通过外键链接到大陆。

class Continent(models.Model):
   countries = [get countries that are linked to this continent here]

class Country(models.Model):
   continent = models.ForeignKey(Continent)

如何在国家属性中获取关联国家/地区?

在 shell 中我可以使用

Country.objects.get()

但似乎我不能在另一个类的属性中使用类名 Country。

【问题讨论】:

    标签: python django


    【解决方案1】:

    这就是 related_name 在 Django 中的用途。

    在创建与另一个模型的ForeignKey 关系时,您可以指定该关系的反向名称。 (即父模型可以用来访问其所有子模型的名称)。将您的模型定义更改为:

    class Country(models.Model):
       continent = models.ForeignKey(Continent, related_name='countries')
    

    现在从任何大陆实例,您应该可以在其上调用.countries 并获得与其相关的所有国家/地区的queryset您无需向Continent 模型添加任何额外代码。 Django 会自动为您处理。

    例如:

    continent = Continent.Objects.get(id=1)
    continent.countries.all()  # returns a `queryset` of all related countries
    

    阅读documentation,了解更多关于related_name可以做什么的信息

    【讨论】:

      猜你喜欢
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 1970-01-01
      • 1970-01-01
      • 2016-11-13
      相关资源
      最近更新 更多