Wagtail,如何测试PageChooserBlock返回正确键入的页面?

时间:2017-01-13 12:49:09

标签: django wagtail

所以在我公司,我们最近遇到了一个问题。我们有一个自定义的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"得到我们的原始页面, 我们现在想测试一下它会继续工作。

如何测试这一点的任何帮助将非常感激:)

1 个答案:

答案 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