我创建了一个自定义子弹,因为默认子弹无法满足我的需求,并且已经使用新的子弹设置了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上提供页面。我还必须重写其他哪些方法或变量才能在自定义子弹中投放页面?
答案 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_slug
,Page.full_clean
和Page.clean
。更改处理的方式并适应您的意愿。
请注意,您可以使用其他字段,例如my_custom_slug
作为输入,并在自定义方法中使用此值。例如:self.my_custom_slug
。但是,最终结果必须存储在slug字段中。
您可以从内容面板中删除“子弹”字段,以将其从管理用户界面中删除。
最后,子弹必须遵守https://tools.ietf.org/html/rfc1738