在wagtail中筛选InlinePanel中的项目



对于一个小事件列表,我在页面模型中使用了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 %}

最新更新