Django通过外键查询

时间:2016-02-24 10:44:10

标签: python django django-models

我正在学习Django,我有这个基本模型:

from django.db import models

class Country(models.Model):
    name = models.CharField(max_length=255,)
    continent = models.ForeignKey('Continent')

class Continent(models.Model):
    name = models.CharField(max_length=255, unique = True)
    countries = ???

我希望Continent.countries属性返回匹配的国家/地区,并将continent-foreign键设置为此大陆。从Django docs我发现我应该使用外键,但是后向查询会导致问题。我已经尝试了几种方法,但作为初学者,我无法找到“正确”的方法。 有什么建议吗?

2 个答案:

答案 0 :(得分:3)

您无需在countries中创建Continent属性即可建立反向关系。您可以使用反向Countries关系找到附加到每个Continent的{​​{1}}:

ForeignKey

当您在continent = Continent.objects.get(name='Asia') countries = continent.country_set.all() country_set之间建立ForeignKey关系时,Django会创建Country函数。

答案 1 :(得分:3)

我同意xyres。此外,您可以在ForeignKey中定义 related_name ,如:

continent = models.ForeignKey('Continent', related_name='countries')

因此,您可以轻松获得大陆的国家/地区:

continent.countries.all()

这里,大陆是模型Continent的对象。