2012-12-05 79 views
1

我必须在django项目 - >国家和洲际实施两个模型。 可以从用这两个表填充数据库的XML文件导入关于国家和大陆的所有信息。django实施模型

我实现了他们以这种方式

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对象没有任何获取方法” 任何人都可以帮助我吗?

感谢

回答

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') 
+0

请从顶部删除'countries'条目。 – SiddharthaRT

+0

首先不要注意。谢谢 –

+0

,班上有一个重复的行 - 必须再次滑倒。 – SiddharthaRT