【问题标题】:Template and model reuse in WagtailWagtail 中的模板和模型重用
【发布时间】:2021-03-19 07:12:56
【问题描述】:

我正在构建一个相当基本的 Wagtail 网站,但遇到了关于模型和模板重用的问题。

假设我的网站有两种条目:

  1. 博客文章和
  2. 事件。

两个页面看起来相同,并且共享许多模型字段(例如,作者、类别、介绍等)。但是,有些模型字段仅对事件条目类型有意义(例如,event_date、event_venue)。

为这个用例创建模板和模型而不在代码中重复我自己的理想方法是什么?

目前,博客和活动条目都使用相同的 HTML 模板和相同的模型。但是,当用户在 Wagtail 管理员中创建博客文章时,他或她必须“忽略”特定于事件的字段(将来可能会变得更多)。

我是否必须创建两个单独的模板文件和两个单独的模型,尽管博客和活动 95% 的代码相同?在 Wagtail 中解决这个问题的正确方法是什么?

【问题讨论】:

    标签: wagtail wagtail-admin


    【解决方案1】:

    如果您想保持原样,包含在一个模型和模板中,您可以为每个伪类型(博客和事件)创建单独的模型管理员,并覆盖查询集函数以使每个单独的模型管理员只显示您正在寻找的那些,然后编辑显示在创建/编辑/删除的面板。

    class EventAdmin(ModelAdmin):
        ...
    
    
        panels = [
            FieldPanel('your_field'),
            ...
        ]
    
        def get_queryset(self, request):
            qs = super().get_queryset(request)
            events = qs.filter(your_field__isnull=False)
            return events
    

    更多信息https://docs.wagtail.io/en/stable/reference/contrib/modeladmin/index.html

    【讨论】:

      猜你喜欢
      • 2021-10-09
      • 2016-04-21
      • 1970-01-01
      • 2015-09-11
      • 2021-06-08
      • 1970-01-01
      • 2021-10-10
      • 2017-06-21
      • 2021-05-26
      相关资源
      最近更新 更多