Тесту Django не удается выполнить миграции
Я пытаюсь запустить тестовый скрипт, следуя этой django doc (здесь используется именно эта версия). Он быстро терпит неудачу с длинным стеком. Я выбрал, что является возможным виновником
File "/home/user11/app-master/en/lib/python3.8/site-packages/django/db/migrations/operations/special.py", line 190, in database_forwards
self.code(from_state.apps, schema_editor)
File "/home/user11/app-master/app/colegiados/migrations/0002_auto_20200128_1646.py", line 185, in migrate
add_sistema_entidade_e_orgao_composicao(apps, sistema)
File "/home/user11/app-master/app/colegiados/migrations/0002_auto_20200128_1646.py", line 16, in add_sistema_entidade_e_orgao_composicao
user = get_user(apps)
File "/home/user11/app-master/app/colegiados/migrations/0002_auto_20200128_1646.py", line 7, in get_user
return User.objects.filter(
File "/home/user11/app-master/en/lib/python3.8/site-packages/django/db/models/query.py", line 318, in __getitem__
return qs._result_cache[0]
IndexError: list index out of range
В качестве обходного пути я изменил файл query.py от django
if qs._result_cache:
return qs._result_cache[0]
else:
return ""
Что работало, до следующей ошибки:
File "/home/user11/app-master/en/lib/python3.8/site-packages/django/db/migrations/operations/special.py", line 190, in database_forwards
self.code(from_state.apps, schema_editor)
File "/home/user11/app-master/app/core/migrations/0016_auto_20201120_0934.py", line 106, in migrate
sistema = Sistema.objects.get(nom_alias=sistema)
File "/home/user11/app-master/en/lib/python3.8/site-packages/django/db/models/manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/home/user11/app-master/en/lib/python3.8/site-packages/django/db/models/query.py", line 439, in get
raise self.model.DoesNotExist(
__fake__.DoesNotExist: Sistema matching query does not exist.
Теперь я застрял. База данных test_database создается со всеми таблицами до этих ошибок миграции, в подавляющем большинстве которых нет никаких данных. Среди тех, которые пусты, есть таблица, на которую, похоже, ссылается эта последняя ошибка.
Обратите внимание, что я не разработчик, я не принимал участия ни в создании используемой БД, ни в миграциях. Я сильно подозреваю, что база данных (Postgres12) должна быть создана/восстановлена из "минимальной" резервной копии, прежде чем миграции смогут работать должным образом. Может ли это быть причиной этих неудач? Если да, то какие у меня есть варианты запуска теста django, который не изменяет развернутую базу данных? Есть ли варианты запуска теста как блока запросов и последующего отката, поскольку он использует Postgres?
После некоторого разговора с остальными членами команды было решено сбросить все миграции, чтобы гарантировать, что подобная проблема больше не возникнет. Возможно, это не самое "ожидаемое" решение, но вполне достойное решение.