wagtail - Wagtail 中的模板和模型重用
问题描述
我正在构建一个相当基本的 Wagtail 站点,并且遇到了关于模型和模板重用的问题。
假设我的网站有两种条目:
- 博客文章和
- 事件。
两个页面看起来相同并且共享许多模型字段(例如,作者、类别、介绍等)。但是,有些模型字段仅对事件条目类型有意义(例如,event_date、event_venue)。
为这个用例创建模板和模型而不在代码中重复我自己的理想方法是什么?
现在,博客和事件条目都使用相同的 HTML 模板和相同的模型。但是,当用户在 Wagtail 管理员中创建博客文章时,他或她必须“忽略”特定于事件的字段(将来可能会变得更多)。
尽管博客和活动 95% 的代码相同,我是否必须创建两个单独的模板文件和两个单独的模型?在 Wagtail 中解决这个问题的正确方法是什么?
解决方案
如果您想按原样维护它,包含在一个模型和模板中,您可以为每个伪类型(博客和事件)创建单独的模型管理员,并覆盖 queryset 函数以使每个单独的模型管理员只显示您的模型管理员'正在查找,然后编辑在创建/编辑/删除时显示的面板。
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
推荐阅读
- highcharts - 最大不能有 highcharts x 轴标签
- javascript - Aurelia bindingEngine.propertyObserver - 检测何时因对象更改而更改属性
- apache-camel - 如何在 Apache Camel 中安排 JMS 消费?
- laravel - Laravel JOIN 查询有 2 个条件,其中一个为 NULL
- java - 将非 Web 客户端的用户名和密码传递给 RestController Service 并在 Service 中检索
- ios - 是否必须使用 Assets.xcassets?
- circleci - Circleci 在工作流作业中传递 docker 图像
- powershell - 获取父路径名并从具有递归性的 PSObject 中加入它们
- c# - 如果不支持并行性,为什么要使用 SaveChangesAsync?
- javascript - PHP 和 Jquery 倒数计时器不同的 GMT