g-制作自定义子弹,但无法从中投放页面

时间:2018-12-25 17:42:52

标签: django wagtail

我创建了一个自定义子弹,因为默认子弹无法满足我的需求,并且已经使用新的子弹设置了url_path。但是该页面仍使用默认的标签。

我已经用以下代码设置了url_path:

def set_url_path(self, parent):
    super().set_url_path(self)
    if parent:
        self.url_path = parent.url_path + self.custom_slug + '/'
    return self.url_path

但是,当我发布页面时,它仍然返回带有默认值的页面。我以为Wagtail在url_path上提供页面。我还必须重写其他哪些方法或变量才能在自定义子弹中投放页面?

1 个答案:

答案 0 :(得分:1)

您不能先切换到其他字段。 slug字段可在Wagtail各处使用,以查找URL,查询并提供正确的页面。

您可以通过编程方式将slug值设置为其他值。 Page.slug的定义是:

slug = models.SlugField(
    verbose_name=_('slug'),
    allow_unicode=True,
    max_length=255,
    help_text=_("The name of the page as it will appear in URLs e.g 
                 http://example.com/blog/[my-slug]/")
)

该字段接受Unicode字符。

您应覆盖Page._get_autogenerated_slugPage.full_cleanPage.clean。更改处理的方式并适应您的意愿。

请注意,您可以使用其他字段,例如my_custom_slug作为输入,并在自定义方法中使用此值。例如:self.my_custom_slug。但是,最终结果必须存储在slug字段中。

您可以从内容面板中删除“子弹”字段,以将其从管理用户界面中删除。

最后,子弹必须遵守https://tools.ietf.org/html/rfc1738