4

「admin.site.unregister(Value)」と同等のことを行う必要がありますが、wagtail_hooks.py で「modeladmin_register(Value)」を使用して wagtailmodeladmin に登録されたモデルの場合です。どうやってそれをしますか?

4

3 に答える 3

1

組み込みの方法はありませんが、独自の方法を追加したい場合:

# helpers.py
from wagtail import hooks    

def replace_hook(hook_name, original_fn):
    hooks._hooks[hook_name].remove((original_fn, 0))
    def inner(fn):
        hooks.register('register_page_listing_buttons', fn)
        return fn
    return inner

「子ページの追加」以外のすべてのボタンをリスト ビューから削除したいとします。

# wagtail_hooks.py
import helpers

@replace_hook('register_page_listing_buttons', page_listing_buttons)
def remove_redundant_buttons(page, page_perms, is_parent=False):
    buttons = page_listing_buttons(page, page_perms, is_parent)
    if isinstance(page, models.BasePage):
        return buttons
    else:
        # for non-subclasses-of-BasePage allow only adding children
        allowed_urls = ['add_subpage']
        return [
            item for item in buttons
            if item.url and resolve(item.url).url_name in allowed_urls
        ]

結果:

ここに画像の説明を入力

于 2018-04-13T10:29:02.807 に答える