Тесту 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?

После некоторого разговора с остальными членами команды было решено сбросить все миграции, чтобы гарантировать, что подобная проблема больше не возникнет. Возможно, это не самое "ожидаемое" решение, но вполне достойное решение.

Вернуться на верх