2010-02-12 36 views
0

我有Django的對象:關於Django模板對象的額外數據

class Event(models.Model): 
    title = models.CharField(max_length=255) 
    event_start_date = models.DateField(null=True, blank='true') 
    ... 

class RegistrationDate(models.Model): 
    event = models.ForeignKey(tblEvents) 
    date_type = models.CharField(max_length=10, choices=registration_date_type) 
    start_date = models.DateField(blank='true', null='true') 
    end_date = models.DateField(blank='true', null='true') 

事件可以有早,中,晚期的註冊週期。

我寫了一個函數,它在一個事件,並返回一個:無,「早」,「正常」或「晚」

所有這一切的偉大工程。

在我的應用程序中,我想顯示事件列表以及註冊狀態。所以我做了這樣的查詢。

Events = tblEvents.objects.all() 

所以我所有關於該事件的信息,但不是狀態。

獲取模板中顯示的每個事件狀態的最簡單/最好的方法是什麼?

我想我可以寫一個模板標籤,但是這似乎更多的工作,然後應該是必要的。

回答

5

屬性添加到您的Event類例如爲:

class Event: 
    # stuff here 

    @property 
    def status(self): 
    # do the same thing here as in your status function 
    return status 

的,你可以在你的模板做:

{{ event.status }} 
+0

所以沒關係該功能查詢RegistrationDate表?原來這就是阻止我這樣做的原因。 – lovefaithswing 2010-02-16 19:30:01

+0

@lovefeithswing:不,沒關係。如果您擔心性能,並且查詢結果不會經常更改,則可以緩存結果:http://docs.djangoproject.com/en/1.1/topics/cache/#the-low-level-cache -API – 2010-02-17 07:27:44

2

我認爲你可以使這個功能你寫了一個Event類的方法。然後你可以從模板中調用它。例如...

{% if event %} 
    event.getStatus 
{% endif %} 

......但我沒有在一段時間內完成Django。