Кэш Django Johnny - включать таблицы вместо исключения, используя MAN_IN_BLACKLIST?

Я знаю о Джонни Кеша MAN_IN_BLACKLIST а также JOHNNY_TABLE_BLACKLIST, Есть ли способ указать обратное? То есть указывать только таблицы, которые нужно кэшировать? Я хочу сделать это по той простой причине, что у нас есть более 200 таблиц в приложении, и я хочу кэшировать несколько и не хочу, чтобы мои MAN_IN_BLACKLIST быть действительно огромным.

Спасибо,

2 ответа

Решение

Вместо того, чтобы писать таблицы явно, боюсь, вам нужно взломать johnny/cache.pyВ основном строки содержит blacklist_match, Самый простой способ - это изменить функцию blacklist_match непосредственно:

# set WHITELIST in johnny/settings.py, just as BLACKLIST
WHITELIST = getattr(settings, 'MAN_IN_WHITELIST',
            getattr(settings, 'JOHNNY_TABLE_WHITELIST', []))
WHITELIST = set(WHITELIST)

def blacklist_match(*tables):
    return not WHITELIST.issuperset(tables) or \
           bool(settings.BLACKLIST.intersection(tables))

Начиная с версии 1.4, Джонни Кэш фактически поддерживает белые списки. добавлять JOHNNY_TABLE_WHITELIST в свои настройки и назначьте ему список таблиц, которые вы хотите кэшировать, например:

JOHNNY_TABLE_WHITELIST = ['appname_tablename', 'someotherapp_differenttable']

источник

Другие вопросы по тегам