Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error when migrating new User model

Just created a User model in my models.py to save the users in the database. The model looks like this:

class User(AbstractBaseUser, PermissionsMixin):
    username = models.CharField(_('username'), max_length=30, unique=True,
        validators=[
      validators.RegexValidator(re.compile('^[\w.@+-]+$'), _('Enter a valid username.'), _('invalid'))
    ])
    first_name = models.CharField(_('first name'), max_length=30, blank=True, null=True)
    last_name = models.CharField(_('last name'), max_length=30, blank=True, null=True)
    email = models.EmailField(_('email address'), max_length=255)
    is_staff = models.BooleanField(_('staff status'), default=False,)
    is_active = models.BooleanField(_('active'), default=False,)
    date_joined = models.DateTimeField(_('date joined'), default=timezone.now)

    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = ['email',]

    class Meta:
        verbose_name = _('user')
        verbose_name_plural = _('users')

    def get_full_name(self):
        full_name = '%s %s' % (self.first_name, self.last_name)
        return full_name.strip()

    def get_short_name(self):
        return self.first_name

    def email_user(self, subject, message, from_email=None):
        send_mail(subject, message, from_email, [self.email])

I've also added in settings.py this piece of code:

AUTH_USER_MODEL = "myapp.User"

However, when I try to makemigrations for applying the changes, it appears this error:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Python\lib\site-packages\django-1.9.1-py3.5.egg\django\core\management\__init__.py", line 353, in execute_from_command_line
    utility.execute()
  File "C:\Python\lib\site-packages\django-1.9.1-py3.5.egg\django\core\management\__init__.py", line 345, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Python\lib\site-packages\django-1.9.1-py3.5.egg\django\core\management\base.py", line 348, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Python\lib\site-packages\django-1.9.1-py3.5.egg\django\core\management\base.py", line 399, in execute
    output = self.handle(*args, **options)
  File "C:\Python\lib\site-packages\django-1.9.1-py3.5.egg\django\core\management\commands\makemigrations.py", line 105, in handle
    loader.project_state(),
  File "C:\Python\lib\site-packages\django-1.9.1-py3.5.egg\django\db\migrations\loader.py", line 338, in project_state
    return self.graph.make_state(nodes=nodes, at_end=at_end, real_apps=list(self.unmigrated_apps))
  File "C:\Python\lib\site-packages\django-1.9.1-py3.5.egg\django\db\migrations\graph.py", line 280, in make_state
    project_state = self.nodes[node].mutate_state(project_state, preserve=False)
  File "C:\Python\lib\site-packages\django-1.9.1-py3.5.egg\django\db\migrations\migration.py", line 88, in mutate_state
    operation.state_forwards(self.app_label, new_state)
  File "C:\Python\lib\site-packages\django-1.9.1-py3.5.egg\django\db\migrations\operations\models.py", line 158, in state_forwards
    apps = state.apps
  File "C:\Python\lib\site-packages\django-1.9.1-py3.5.egg\django\utils\functional.py", line 33, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Python\lib\site-packages\django-1.9.1-py3.5.egg\django\db\migrations\state.py", line 162, in apps
    return StateApps(self.real_apps, self.models)
  File "C:\Python\lib\site-packages\django-1.9.1-py3.5.egg\django\db\migrations\state.py", line 235, in __init__
    raise ValueError(self._pending_models_error(pending_models))
ValueError: Unhandled pending operations for models:
  myapp.user (referred to by fields: admin.LogEntry.user)

So I'm looking for info for possible solutions or causes for this error but can't figure out why it happens. May it have to be a problem with some previous migration? (if so, I have no clue of which nor why). I'd add more information if needed, but I'd really appreciate any clue of the cause of this error.

like image 961
Jim Avatar asked Apr 08 '16 09:04

Jim


1 Answers

The custom user docs specifically warn against switching User model after you have already created migrations; there's too much dependency for that to work properly. You may need to delete your existing db and migrations and start from scratch.

like image 149
Daniel Roseman Avatar answered Nov 04 '22 23:11

Daniel Roseman