每页的鹡鸰字段/数据?

Wagtail Fields / Data for Every Page?

在wagtail中,有没有什么好的方法可以在每个页面模型中添加相同的字段?我正在考虑诸如 SEO 数据字段和搜索元信息之类的东西,几乎每个页面都希望实现这些东西。我似乎找不到使用 Wagtail 执行此操作的好方法。

您可以使用抽象 classes(然后您从这个基础继承 class 而不是 Wagtail 的 Page)或 mixins(然后您从 mixin 和 Wagtail 的 Page) 为此。

# Example with Abstract class
class BasePage(wagtail.wagtailcore.models.Page):
    seo_image = models.ForeignKey(...)

    class Meta:
        abstract = True


class MyPage(BasePage):
    pass


# Example with mixins
class SEOMixin(django.db.models.Model):
    seo_image = models.ForeignKey(...)

    class Meta:
        abstract = True

class MyPage(SEOMixin, wagtail.wagtailcore.models.Page):
    pass

使用抽象 classes 可能是最简单的,但您的所有页面将始终继承基础 class 上定义的所有字段。 另一方面,使用 mixins 更灵活,因为您可以拥有多个 mixins(SEOMixin、ThumbnailMixin 等)并根据需要组合它们。