Django ValueError: поле admin.LogEntry.user было объявлено с ленивой ссылкой на 'app.user', но приложение 'app' не предоставляет модель 'user'
У меня похожая проблема с этим сообщением, но единственный ответ на него не помог:
❯ python manage.py makemigrations
No changes detected
Потому что когда я выполняю python manage.py migrate
, я получаю следующий трассировочный откат:
❯ python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, blog, contenttypes, portfolio, sessions
Traceback (most recent call last):
File "C:\Users\user\Projects\personal_website\src\packages\pweb_django\manage.py", line 23, in <module>
main()
File "C:\Users\user\Projects\personal_website\src\packages\pweb_django\manage.py", line 19, in main execute_from_command_line(sys.argv)
File "C:\Users\user\Projects\personal_website\pweb-venv\lib\site-packages\django\core\management\__init__.py", line 446, in execute_from_command_line
utility.execute()
File "C:\Users\user\Projects\personal_website\pweb-venv\lib\site-packages\django\core\management\__init__.py", line 440, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Users\user\Projects\personal_website\pweb-venv\lib\site-packages\django\core\management\base.py", line 414, in run_from_argv
self.execute(*args, **cmd_options)
File "C:\Users\user\Projects\personal_website\pweb-venv\lib\site-packages\django\core\management\base.py", line 460, in execute
output = self.handle(*args, **options)
File "C:\Users\user\Projects\personal_website\pweb-venv\lib\site-packages\django\core\management\base.py", line 98, in wrapped
res = handle_func(*args, **kwargs)
File "C:\Users\user\Projects\personal_website\pweb-venv\lib\site-packages\django\core\management\commands\migrate.py", line 236, in handle
pre_migrate_apps = pre_migrate_state.apps
File "C:\Users\user\Projects\personal_website\pweb-venv\lib\site-packages\django\utils\functional.py", line 49, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "C:\Users\user\Projects\personal_website\pweb-venv\lib\site-packages\django\db\migrations\state.py", line 544, in apps
return StateApps(self.real_apps, self.models)
File "C:\Users\user\Projects\personal_website\pweb-venv\lib\site-packages\django\db\migrations\state.py", line 615, in __init__
raise ValueError("\n".join(error.msg for error in errors))
ValueError: The field admin.LogEntry.user was declared with a lazy reference to 'portfolio.user', but app 'portfolio' doesn't provide model 'user'.
Однако, когда я проверяю файл portfolio\models.py
, он явно предоставляет 'user'-модель:
class User(AbstractUser):
"""Dummy class in order to mimic a standard Auth-user.
Docs: https://docs.djangoproject.com/en/4.0/topics/auth/customizing/#using-a-custom-user-model-when-starting-a-project
"""
pass
В соответствующем portfolio\admin.py
- файле регистрируется следующий сайт администратора:
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import User
admin.site.register(User, UserAdmin)
Я хотел бы понять, почему это не работает, в то время как другой класс модели может быть найден и зарегистрирован без проблем:
from django.contrib import admin
from .models import Project
admin.site.register(Project)
Это происходит, если вы запустили миграции auth app по умолчанию и позже изменили AUTH_USER_MODEL в settings.py. Вы можете попробовать следующее:
#comments AUTH_USER_MODEL in the settings.py file so it points to a default User Model
Python manage.py migrate auth zero
#Uncomment AUTH_USER_MODEL='recommend.AuthUser'
Python manage.py migrate auth
Если это не решит ваши проблемы и вы используете Sqlite3, вы можете:
Delete all migration files except __init__.py file.