【问题标题】:Knowing when's best to use Wagtail Pages or Django Models for Wagtail website知道什么时候最好在 Wagtail 网站上使用 Wagtail 页面或 Django 模型
【发布时间】:2026-01-14 03:55:02
【问题描述】:

我正在创建一个运行 wagtail 作为 CMS/后端的网站,并将 Page 用于网站上的实际网页。除此之外,我还需要一个“事件”部分,但我不确定是将其设为 Wagtail Page 还是 Django models.Model

我希望它为用户工作的方式是在管理面板中使用 ModelAdmin 有一个事件部分,以便用户可以轻松找到并导航到所有事件,并且这些事件将显示在网站的各个部分 - 例如主页、活动页面、文章页面。

我认为为此使用Page 并要求用户每次都导航到它(主页> 事件列表> 事件详细信息)与将ModelAdmin 与Django 配对使用相比是浪费时间和麻烦models.Model 只需点击 1 或 2 次即可。

通读我的问题,很明显我倾向于为此使用 Django 模型,所以我的问题是:两者之间的权衡是什么?是否有使用其中一个或另一个的固定用例?使用一个是否意味着比另一个拥有更多/更少的功能?那些会是什么?


注意:我知道我的问题与 Guidelines for using Wagtail Pages or Django models? 几乎相同,但它更侧重于电子商务,但最重要的是它没有答案。

【问题讨论】:

  • 你可以让他们鹡鸰snippets。这样,它们将自动出现在 wagtail 后端进行编辑。如果您的活动有详细页面(可能由应用程序或 EventListPage 自动呈现),您应该考虑将它们设为indexed,以便它们出现在您的搜索中。
  • 谢谢。我可以,但我仍然不知道它们之间有什么区别。 sn-p 与ModelAdmin 方式有何不同,因为它们都使用models.Model,两者和Page 的不同用途是什么。同样对于 sn-p,它是否可以用作管理员中的一个部分,在页面模板上并插入到页面或流域中?这就是你建议的原因吗?

标签: python django wagtail


【解决方案1】:

使用models.Model 并注册为 sn-p,因为它会给您更多的灵活性。

正如上面提到的一位用户,使用 sn-p 对您正在讨论的内容来说是一个好主意。只需单击管理员,它们就在事件系统中。然后,您可以将该模型传递到页面的上下文中。 Here's 在 Wagtail 中执行此操作的示例。如果您希望客户能够通过 CMS 手动放置事件,请参阅 this 示例,了解将 sn-ps 添加为流场。

【讨论】:

  • 我将它创建为一个 sn-p,因为它可以很好地用于文章/流域,并将其插入模型管理。那么我将如何为每个事件创建一个页面?我想在主页上显示 x 个事件。然后是一个单独的事件列表页面,其中包含显示有关事件的完整信息的子事件详细信息页面。现在,除了显示单个事件的方法之外,我什么都有。
最近更新 更多