2012-12-05 5 views
1

장고 프로젝트에서 두 개의 모델을 구현해야합니다 (예 : 국가 및 대륙). 데이터베이스를이 두 테이블로 채우는 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에 표시하십시오. 이가이 할 수 있다는 것을 의미

"대륙의 나라가 클래스 대륙의 속성 국가를 통해 액세스 할 수 있어야합니다": 문제는 내가 models.ForeignKey을 시도했습니다

from MyApplication.model import Country, Continent 
europe = Continent.object.get(code=u'eu') 
finland = europe.countries.get(code=u'fi') 

을하지만, '아무튼 일하지 마라. "Nonetype 객체에는 get 메소드가 없습니다"라고 말합니다 아무도 도와 줄 수 있습니까?

감사

답변

0

장고 대신이 일대 관계를 얻기 위해 일대일 관계의 역을 사용할 수 있습니다, 직접 많은 한을 지원하지 않습니다.

대륙과 관련된 국가 내에 외래 키를 추가하여 다 대일을 사용하는 다른 접근 방식을 계속 진행하십시오. 이제 대륙에서 일대일로 대면됩니다. 그런 다음 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

'국가'항목을 맨 위에서 제거하십시오. – SiddharthaRT

+0

처음에는주의하지 마십시오. 감사합니다 –

+0

그리고 거기에 클래스에서 중복 라인 - 다시 미끄러해야합니다. – SiddharthaRT