2012-12-05 131 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