对于一个小事件列表,我在页面模型中使用了InlinePanel
。现在我想按日期过滤这些事件,就像我在使用@property
和子页面时所做的那样:date__gte=date.today()
仅在TourdatenIndexPag
页面上显示未来事件。如何做到这一点?
我的实现:
class EventItem(LinkFields):
date = models.DateField("Datum")
...
panels = [FieldPanel('date')]
class Meta:
abstract = True
class TourdatenPageEventItem(Orderable, EventItem):
page = ParentalKey('md.TourdatenIndexPage', related_name='event_items')
class TourdatenIndexPage(Page):
...
content_panels = Page.content_panels + [
InlinePanel('event_items', label="Events"),
]
这些event_items
在哪里以及如何被访问和过滤?
在页面模型上创建一个方法以返回所需的查询集:
class TourdatenIndexPage(Page):
def future_event_items(self):
return self.event_items.filter(date__gte=date.today())
然后,在你的模板上,你可以引用self.future_event_items
:
{% for event in self.future_event_items %}
<li>{{ event.date }}</li>
{% endfor %}