I had a model Profile which was an extension to my User model which was the ForeignKey of my Post model, but I changed it to an AbstractUser and now if I try migrating or running and refreshing the page the server I get an error.
models.py
from django.db import models from django.contrib.auth.models import AbstractUser class User(AbstractUser): bio = models.TextField(max_length=500,null=True)
from django.db import models from django.conf import settings from django.urls import reverse class Post(models.Model): author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True) title = models.CharField(max_length=100) content = models.TextField() def get_absolute_url(self): return reverse('post-details', kwargs={'pk': self.pk})
settings.py
INSTALLED_APPS = [ ... 'posts', 'users', ] AUTH_USER_MODEL = 'users.User'
error message after I try migrating
Apply all migrations: admin, auth, contenttypes, posts, sessions, users Traceback (most recent call last): File "/home/user/Projects/DNF/Project/manage.py", line 22, in <module> main() File "/home/user/Projects/DNF/Project/manage.py", line 18, in main execute_from_command_line(sys.argv) File "/usr/local/lib/python3.10/dist-packages/django/core/management/__init__.py", line 446, in execute_from_command_line utility.execute() File "/usr/local/lib/python3.10/dist-packages/django/core/management/__init__.py", line 440, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/lib/python3.10/dist-packages/django/core/management/base.py", line 402, in run_from_argv self.execute(*args, **cmd_options) File "/usr/local/lib/python3.10/dist-packages/django/core/management/base.py", line 448, in execute output = self.handle(*args, **options) File "/usr/local/lib/python3.10/dist-packages/django/core/management/base.py", line 96, in wrapped res = handle_func(*args, **kwargs) File "/usr/local/lib/python3.10/dist-packages/django/core/management/commands/migrate.py", line 295, in handle pre_migrate_apps = pre_migrate_state.apps File "/usr/local/lib/python3.10/dist-packages/django/utils/functional.py", line 57, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "/usr/local/lib/python3.10/dist-packages/django/db/migrations/state.py", line 566, in apps return StateApps(self.real_apps, self.models) File "/usr/local/lib/python3.10/dist-packages/django/db/migrations/state.py", line 637, 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 'users.user', but app 'users' doesn't provide model 'user'. The field posts.Post.author was declared with a lazy reference to 'users.user', but app 'users' doesn't provide model 'user'. The field users.Profile.user was declared with a lazy reference to 'users.user', but app 'users' doesn't provide model 'user'.
Advertisement
Answer
I easily solved it by deleting all the migration files in the migrations folder except the init.py file. And also delete db.sqlite3. Now run the following commands : python manage.py makemigrations and then python manage.py migrate. Now you’ll have to create the super user once again, so for this just type the following commmand : python manage.py createsuperuser. Then it will prompt for username, email and password, so enter your credentials and all will continue to work properly once again I hope that this will be helpful.