Ошибка manage.py после обновления Wagtail 2.15
После обновления до Wagtail 2.15 (или 2.15.1) с 2.14.2 мой рабочий сайт с postgres и поиском в базе данных ломается, а команды, выполняемые с manage.py
, выдают ошибку, несмотря на то, что я добавил необходимые WAGTAILSEARCH_BACKENDS
в настройки.
У меня есть два веб-приложения с разными настройками, запущенные с одной и той же версии Wagtail. Одно из приложений (putkeep) имеет строку поиска, а другое (secretgifter) - нет. После обновления Wagtail с 2.14.2 до 2.15 putkeep выдает ошибку 404, а secretgifter - нет. Если я использую pip для перехода обратно на 2.14.2, то ошибка 404 исчезает и сайт загружается (хотя результаты поиска выдают ошибку 500).
Если я запускаю makemigrations
(или любую другую команду, использующую manage.py
) для secretgifter, она работает нормально. Для putkeep (с поиском) он выдает следующую ошибку:
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/home/th-putkeep.net/putkeep/lib/python3.8/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
utility.execute()
File "/home/th-putkeep.net/putkeep/lib/python3.8/site-packages/django/core/management/__init__.py", line 395, in execute
django.setup()
File "/home/th-putkeep.net/putkeep/lib/python3.8/site-packages/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/th-putkeep.net/putkeep/lib/python3.8/site-packages/django/apps/registry.py", line 122, in populate
app_config.ready()
File "/home/th-putkeep.net/putkeep/lib/python3.8/site-packages/wagtail/search/apps.py", line 21, in ready
set_weights()
File "/home/th-putkeep.net/putkeep/lib/python3.8/site-packages/wagtail/search/backends/database/postgres/weights.py", line 44, in set_weights
BOOSTS_WEIGHTS.extend(determine_boosts_weights())
File "/home/th-putkeep.net/putkeep/lib/python3.8/site-packages/wagtail/search/backends/database/postgres/weights.py", line 32, in determine_boosts_weights
boosts = get_boosts()
File "/home/th-putkeep.net/putkeep/lib/python3.8/site-packages/wagtail/search/backends/database/postgres/weights.py", line 26, in get_boosts
boosts.add(boost)
TypeError: unhashable type: 'list'
В соответствии с документацией я добавил это в свои настройки:
WAGTAILSEARCH_BACKENDS = {
'default': {
'BACKEND': 'wagtail.search.backends.database',
}
}
Любые предложения будут приняты с благодарностью.
Я обнаружил в своем models.py
код, который не вызывал ошибок на моем сайте под управлением Wagtail 2.14.2 и ниже. Если его закомментировать, он устраняет ошибку, вызванную обновлением до Wagtail 2.15 и выше. Я размещаю его здесь как ответ на мою проблему, потому что все остальное, похоже, работает (включая поиск) без каких-либо дополнительных изменений, хотя я не уверен, почему он вызывает ошибку и нужен ли он мне вообще:
search_fields = Page.search_fields + [ # Inherit search_fields from Page
index.SearchField('content'),
index.SearchField('tags', [
index.SearchField('name', partial_match=True, boost=10),
]),
]