所以在我公司,我们最近遇到了一个问题。我们有一个自定义的StructBlock,它包含了PageChooserBlock的第一个属性。
words = sentence.split()
word_occurrences = {word:words.index(word) for word in words}
在StructBlock中,我们调用render():
page = blocks.PageChooserBlock(required=False)
现在的问题是,值[' page']的类型不是所选的实际页面,而是来自wagtailcore页面模型的相关对象。 这个没有我们的自定义方法,并且在弄清楚我们可以添加" .basepage"得到我们的原始页面, 我们现在想测试一下它会继续工作。
如何测试这一点的任何帮助将非常感激:)
答案 0 :(得分:0)
我假设BasePage
是您项目中某处定义的页面模型?从wagtailcore Page
实例到正确类型的页面对象的标准方法是page.specific
,但如果您知道您的页面是BasePage的实例,那么page.basepage
也将起作用。
从Wagtail 1.8开始,PageChooserBlock支持target_model
参数:
page = blocks.PageChooserBlock(required=False, target_model=BasePage)
这限制了页面选择器,因此您只能选择BasePage
(或子类)实例的页面,并确保页面作为BasePage
实例返回,而不仅仅是wagtailcore Page
。