2013-07-10 2 views
4

을 choice_set : choice_set됩니다장고 튜토리얼은 장고 튜토리얼에서

from django.db import models 
import datetime 
from django.utils import timezone 

# Create your models here. 

class Poll(models.Model): 
    question = models.CharField(max_length=200) 
    pub_date = models.DateTimeField('date published') 
    def __unicode__(self): # Python 3: def __str__(self): 
     return self.question 
    def was_published_recently(self): 
     return self.pub_date >= timezone.now() - datetime.timedelta(days=1) 

class Choice(models.Model): 
    poll = models.ForeignKey(Poll) 
    choice_text = models.CharField(max_length=200) 
    votes = models.IntegerField(default=0) 
    def __unicode__(self): # Python 3: def __str__(self): 
     return self.choice_text 

정의하는 방법과이 작업을 수행 다음과 같이

나는 나의 모델을 정의한?

>>> p = Poll.objects.get(pk=1) 

# Display any choices from the related object set -- none so far. 
>>> p.choice_set.all() 

답변

4

내가 얼마나 깊은 설명 당신이 원하는 모르겠지만, 당신이 poll = models.ForeignKey(Poll)을 수행 할 때 장고 당신을 위해 그것을 정의한다.

You can read here about it.

+0

동적으로 메소드를 생성 할 수있는 파이썬 피처는 무엇입니까? –

+0

이것은 메타 클래스 프로그래밍이라고 불리우며 여기에서 읽을 수 있습니다 : http://www.onlamp.com/pub/a/python/2003/04/17/metaclasses.html - 장고에서는'models . 모델. –

0

choice_set 어디서나 정의되지 않았습니다.

장고는 관계의 "다른"쪽에 대한 API 접근 자, 즉 관계 모델에서 관계를 정의하는 모델에 대한 링크를 만듭니다. 예를 들어, Poll 객체 p는 choice_set 속성 (p.choice_set.all())을 통해 관련된 모든 Choice 객체의 목록에 액세스 할 수 있습니다.

그래서 선택하십시오. choice가 Choice 모델의 소문자이고 _set은 Django Manager Tool의 일종입니다.

자세한 내용은 right here을 참조하십시오.