我必须在django项目中实现两个模型 - >国家和大陆。 可以从使用这两个表填充数据库的XML文件导入有关国家和大陆的所有信息。
我已经以这种方式实施了它们
from django.db import models
class Continent(models.Model):
name = models.CharField(max_length=255, unique=True)
code = models.CharField(max_length=255, unique=True)
countries = ?
class Meta:
ordering = ['name']
class Country(models.Model):
name = models.CharField(max_length=255)
capital = models.CharField(max_length=255)
code = models.CharField(max_length=255, unique=True)
population = models.IntegerField(default=0)
area = models.IntegerField(default=0)
continent = models.ForeignKey(Continent)
class Meta:
ordering = ['name']
你可以看到一个?在Continent.countries中标记,因为我不了解如何实现它。问题是:"非洲大陆的国家应该可以通过类大陆的属性国家访问"
这意味着可以这样做:
from MyApplication.model import Country, Continent
europe = Continent.object.get(code=u'eu')
finland = europe.countries.get(code=u'fi')
我已尝试models.ForeignKey
,但它无法正常工作。
它说" Nonetype对象没有任何get方法"
有人可以帮帮我吗?
由于
答案 0 :(得分:0)
Django不直接支持一对多,而是可以使用一对一关系的反向来获得一对多的关系。
因此,通过在与大陆相关的国家内添加外键,继续使用多对一的方法。现在,你有一个从一个国家到一个大陆的一对一。接下来,从Continent
的对象执行反向查询以获得所需的关系。看看:
class Continent(models.Model):
...
class Country(models.Model):
...
continent = models.ForeignKey(Continent, related_name="countries")
...
europe = Continent.object.get(code=u'eu')
finland = europe.countries.get(code=u'fi')