2013-07-10 159 views
4

從Django的教程:Django的教程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 

凡choice_set定義和如何工作的:

如下我定義我的模型?

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

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

回答

4

我不知道解釋有多深你想要的,但Django的定義爲你當你做poll = models.ForeignKey(Poll)

You can read here about it.

+0

這是什麼叫python功能,它可以動態生成方法? –

+0

它被稱爲元類編程,你可以在這裏閱讀它:http://www.onlamp.com/pub/a/python/2003/04/17/metaclasses.html - 在Django中,當你從'模型中繼承.Model'。 –

0

choice_set沒有在任何地方定義。

Django爲關係的「其他」一方創建API訪問器 - 從相關模型到定義關係的模型的鏈接。例如,Poll對象p可以通過choice_set屬性訪問所有相關Choice對象的列表:p.choice_set.all()。

所以choice_set。在哪裏選擇您的小寫的選擇模型和_set是一種Django管理器工具。

詳細信息,您可以閱讀right here