Кэш 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']