在 wagtail 中过滤 InlinePanel 中的项目
Filter items from an InlinePanel in wagtail
对于一小部分事件,我在页面模型中使用了 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
?
在您的页面模型上创建一个方法以return您想要的查询集:
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 %}
对于一小部分事件,我在页面模型中使用了 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
?
在您的页面模型上创建一个方法以return您想要的查询集:
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 %}