2017-01-13 62 views
0

所以在我的公司,我們最近遇到了一個問題。我們有一個自定義StructBlock,它包含了第一個屬性PageChooserBlock。W,,如何測試PageChooserBlock返回正確的輸入頁面?

page = blocks.PageChooserBlock(required=False) 

在StructBlock我們再調用render():

def render(self, value, context=None): 
    target_page = value['page'].basepage or context.get('page') 
    if target_page is not None: 
     context = context or {} 
     context['new_value'] = target_page.CUSTOM_METHOD_DEFINED_IN_BASEPAGE() 
    return super(CustomStructBlock, self).render(value, context) 

現在的問題是,該值[「頁」]的類型是不實際的頁面選擇,但相關對象來自wagtailcore頁面模型。 這個沒有我們的自定義方法,並且在確定我們可以添加「.basepage」以獲取我們的原始頁面後,我們現在要測試它將繼續工作。

如何測試任何幫助,這將是非常讚賞:)

回答

0

我假設BasePage在項目中的某處定義的頁面模式?從wagtailcore Page實例到正確類型的頁面對象的標準方式是page.specific,但如果您知道您的頁面是BasePage的實例,則page.basepage也可以工作。

由於鶺鴒1.8,PageChooserBlock支持target_model參數:

page = blocks.PageChooserBlock(required=False, target_model=BasePage) 

這限制了頁面選擇器,這樣就可以只選擇是BasePage(或子類)的實例頁,並且還確保頁面作爲BasePage實例返回,而不僅僅是一個w c編號Page

相關問題