? тогда почему моя проблема происходит?

но я обновил Django до версии 1.8 и настроил новую базу данных разработки для нового начала. Миграции и зависимости прошли хорошо, за исключением обычных ошибок, которые вы получаете, и в итоге вы решаете. Приложение работает локально, теперь просто отлично.

Тем не менее, я получаю сообщение об ошибке при попытке запустить тесты:

python manage.py test

Это ошибка, которую я получаю:

django.db.utils.ProgrammingError: relation "auth_user" does not exist

Излишне говорить, что модуль аутентификации Django действительно установлен и перенесен в приложение, поэтому я не уверен, что происходит.

Вот полная трассировка стека на тот случай, если вам нужно взглянуть на нее, но она ничего не говорит даже о том, что я могу помочь найти причину этой ошибки:

Traceback (most recent call last):
  File "C:/Users/dabadaba/PycharmProjects/dogpatchsports_com/mysite/manage_sched_dev.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\core\management\__init__.py", line 354, in execute_from_command_line
    utility.execute()
  File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\core\management\__init__.py", line 346, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\core\management\commands\test.py", line 30, in run_from_argv
    super(Command, self).run_from_argv(argv)
  File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\core\management\base.py", line 394, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\core\management\commands\test.py", line 74, in execute
    super(Command, self).execute(*args, **options)
  File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\core\management\base.py", line 445, in execute
    output = self.handle(*args, **options)
  File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\core\management\commands\test.py", line 90, in handle
    failures = test_runner.run_tests(test_labels)
  File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\test\runner.py", line 210, in run_tests
    old_config = self.setup_databases()
  File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\test\runner.py", line 166, in setup_databases
    **kwargs
  File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\test\runner.py", line 370, in setup_databases
    serialize=connection.settings_dict.get("TEST", {}).get("SERIALIZE", True),
  File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\db\backends\base\creation.py", line 368, in create_test_db
    test_flush=not keepdb,
  File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\core\management\__init__.py", line 120, in call_command
    return command.execute(*args, **defaults)
  File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\core\management\base.py", line 445, in execute
    output = self.handle(*args, **options)
  File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\core\management\commands\migrate.py", line 179, in handle
    created_models = self.sync_apps(connection, executor.loader.unmigrated_apps)
  File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\core\management\commands\migrate.py", line 318, in sync_apps
    cursor.execute(statement)
  File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\db\backends\utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\db\utils.py", line 98, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\db\backends\utils.py", line 62, in execute
    return self.cursor.execute(sql)
django.db.utils.ProgrammingError: relation "auth_user" does not exist

Я могу найти обходной путь послеэтот ответ что препятствует выполнению тестовой задачиmigrate, который в соответствии с тем, что я читал, должен быть точкой, где происходит ошибка. Как ни странно, так как, когда я бегуmigrate все в порядке.

Тем не менее, я бы предпочел не прибегать к нахальному обходному пути и придерживаться того, чтобы делать вещи, как они задуманы. Кроме того, эта ошибка может указывать на то, что на самом деле что-то не так и должно быть исправлено.

Некоторые решения предлагают запустить:

python manage.py migrate auth
python manage.py migrate

Но это ничего не значит, поскольку в моем проекте нет ожидающих миграций.

Как я могу решить эту загадочную проблему?

Ответы на вопрос(1)

Решение Вопроса

Если у вас есть приложения с внешними ключамиauth.Userзатем убедитесь, что начальные миграции для этих приложений имеютзависимость в приложении аутентификации:

class Migration(migrations.Migration):

    dependencies = [('auth', '__first__')]
 Alasdair13 окт. 2017 г., 11:46
У вас есть пользовательская модель?
 dabadaba13 окт. 2017 г., 13:07
так в основномauth.User это то же самое, чтоdjango.contrib.auth.models.User? тогда почему моя проблема происходит?
 dabadaba13 окт. 2017 г., 12:01
afaik мы используем нативных пользователей Django. Но вот что я только что узнал, как вы думаете, это странно? Это атрибут одной из наших моделей:admins = models.ManyToManyField('auth.User'), Затем из оболочки я получаю экземпляр этой модели из БД, и я печатаю типinstance.admins.first(), который выводит то, что я ожидалdjango.contrib.auth.models.User, Тогда почему атрибут определяется какauth.User? Может быть, это ошибка, перенесенная нашим обновлением Django? Но как миграция вообще работала? Вы видите что-нибудь странное здесь?
 dabadaba13 окт. 2017 г., 11:38
Ну у них такая зависимость видимоmigrations.swappable_dependency(settings.AUTH_USER_MODEL)
 Alasdair13 окт. 2017 г., 13:02
'<app>.<model>' все в порядке - см. пример'production.Manufacturer' в документах. Рекомендация для пользовательской модели заключается в использованииsettings.AUTH_USER_MODEL чтобы сделать его более пригодным для повторного использования, но это не проблема,'auth.User' Это хорошо.

Ваш ответ на вопрос