Нет такой таблицы: 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
.
В чем может быть проблема?