我应该在Django应用程序中为所有模型使用Wagtail吗?

时间:2017-11-21 23:12:50

标签: django-models wagtail

我正在构建一个使用Wagtail的新webapp。这是一个架构问题。

将有标准关于服务条款博客页面。所有这些都非常适合Wagtail范例。网站内容的其余部分是关于特定类型的企业的基于位置的信息。想想FourSquare类型的应用。这些页面的数据将非常结构化,通过面向用户的网页和移动应用程序进行更新,并且是JavaScript重量级。

对于常规的Wagtail页面,随着时间的推移可能会有数百个。对于位置页面类型,(希望)将有数万个页面嵌套到最多四个级别。

从网站范围的功能角度来看,我希望利用像站点地图和弹性搜索这样的Wagtail功能。

我的问题是,我应该使用Wagtail Page类来处理基于位置的页面吗?

优点:

  • 与Elastic Search和Wagtail站点地图轻松集成
  • 在管理方面利用Wagtail编辑器。
  • 始终如一的模型和api结构。

缺点:

  • 位置页面的开销可能会增加。
  • 需要利用更多的钩子来操纵视图输出(很多JS,因此将非模型信息插入到模板中)。
  • 可能会限制使用某些第三方模块。

如果我采用非扭曲路线,是否可以在搜索索引中添加非扭曲模型?

在这个选择中我还应该考虑其他问题吗?

1 个答案:

答案 0 :(得分:1)

Any Django model can be indexed and searched继承自index.Indexed并将search_fields定义到模型上。

至于是否使用页面,一如既往取决于许多事情。但是,看起来保持您的位置模型是有意义的,而不是将其作为页面并在管理员中公开(如果您需要一些已存在的扩展,则为Django Admin,否则为Wagtail's modeladmin) 。然后,您将创建LocationIndexPage来实现RoutablePageMixin以动态提供LocationPage。该页面不会存在于管理树中,但无论如何都可以访问。