Нет такой таблицы: two_factor_phonedevice при использовании django-two-factor-auth==1.14.0 и --nomigrations

У меня есть проект Django 2.2 с django-otp==0.8.0, django-two-factor-auth[phonenumbers]==1.14.0 и приложение two_factor_auth, которое использует эти две библиотеки.

Когда тесты запускаются с миграциями, они проходят.

$ ./manage.py test two_factor_auth
  Applying two_factor.0001_initial... OK
  Applying two_factor.0002_auto_20150110_0810... OK
  Applying two_factor.0003_auto_20150817_1733... OK
  Applying two_factor.0004_auto_20160205_1827... OK
  Applying two_factor.0005_auto_20160224_0450... OK
  Applying two_factor.0006_phonedevice_key_default... OK
  Applying two_factor.0007_auto_20201201_1019... OK
----------------------------------------------------------------------
Ran 13 tests in 5.549s

OK

Обратите внимание, что это миграции из пакета django-two-factor-auth, так как приложение two-factor-auth не имеет миграций.

Однако, когда тесты запускаются без миграций (как это делается в CI и локальном окружении, поскольку наш проект имеет сотни миграций), они терпят неудачу.

$ ./manage.py test two_factor_auth --nomigrations

Traceback (most recent call last):
  File "/opt/miniconda3/lib/python3.8/site-packages/two_factor/views/profile.py", line 38, in get_context_data
    'default_device': default_device(self.request.user),
  File "/opt/miniconda3/lib/python3.8/site-packages/two_factor/utils.py", line 16, in default_device
    for device in devices_for_user(user):
  File "/opt/miniconda3/lib/python3.8/site-packages/django_otp/__init__.py", line 80, in devices_for_user
    for device in model.objects.devices_for_user(user, confirmed=confirmed):
  File "/opt/miniconda3/lib/python3.8/site-packages/django/db/models/query.py", line 274, in __iter__
    self._fetch_all()
  ...
  File "/opt/miniconda3/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py", line 383, in execute
    return Database.Cursor.execute(self, query, params)
django.db.utils.OperationalError: no such table: two_factor_phonedevice

Я могу подтвердить, что эта проблема больше не возникает, если я вернусь к использованию django-otp==0.7.5 и django-two-factor-auth==1.9.1.

В чем может быть проблема?

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