我正在学习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我发现我应该使用外键,但是后向查询会导致问题。我已经尝试了几种方法,但作为初学者,我无法找到“正确”的方法。 有什么建议吗?
答案 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的对象。