【问题标题】:Filter items from an InlinePanel in wagtail从 wagtail 中的 InlinePanel 过滤项目
【发布时间】:2015-09-16 00:21:50
【问题描述】:

对于一小部分事件,我在我的页面模型中使用了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 可以在哪里以及如何被访问和过滤?

【问题讨论】:

    标签: wagtail


    【解决方案1】:

    在你的页面模型上创建一个方法来返回你想要的查询集:

    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 %}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 2022-11-02
      相关资源
      最近更新 更多