2010-05-17 91 views
2

我必須表明在Django應用程序按日期條目和我有點堵塞: 這裏是我的模型的例子:Django的註釋上的「自定義字段」 Django的排序

class Event(models.Model): 
    name = models.CharField(max_length=100) 
    theme = models.ForeignKey(Theme) 
    ... 

class Date(models.Model): 
    event = models.ForeignKey(Event) 
    start = models.DateField() 
    end = models.DateField() 

    class Meta: 
     ordering = ['start', 'end'] 
     unique_together = ['event', 'start'] 

我得到了拿在數據庫中的所有事件的看法:)Event.objects.all(

,然後在模板中我展示他們的主題和其他東西,例如日期開始的事件列表。 我想在列表中顯示的第一個「未來」的日期,這很容易對事件模型的自定義方法:

def get_first_future_date(self): 
    today = datetime.datetime.now() 
    dates = self.date_set.filter(end__gte=today) 
    if dates: 
     return dates[0] 

這種方法的第一個將來的日期,或者沒有完成的最早日期。
Here's the problem : I would like to show that field in my template and be able to sort it with django-sorting.

Django的排序使用{%錨ARG%}做,但我不知道如何來管理它那場... 你會怎麼做???

感謝由事先的任何答覆。

+0

我堅持在同樣的情況。你有沒有找到解決方案? – Konstant 2011-05-05 15:41:23

回答

0

你的問題還不清楚,爲什麼當get_first_future_date只返回Event的一個實例時,你爲end字段排序查詢集?

嗯,我從來沒有使用Django的排序,但我相信我會做

events = Event.objects.all() # or filter(...) 
# pass events to the template context 

,然後在模板

{% load sorting_tags %} 
{% autosort events %} 
<thead> 
    <th>{% anchor start Starting at %}</th> 
    <th>{% anchor end Ending at %}</th> 
    ... 
</thead> 
{% for event in events %} 
<tr> 
    <td>{{event.start}}</td> 
    ... 
</tr> 
{% endfor %} 

是不是你問的是什麼呢?