title: Django django.db.utils.ProgrammingError. The relation <<Pages_account>> does not exist
body: <p>Edit: I tried creating a completely new django project with a new database, created again the Pages app and copied the actual files to the new project, and it worked like a charm, so apparently it´s a django bug or something that i did wrong with the last one. I hope it´s the second, because i don´t want to create a entirely new project all the times!</p>
  
  <p><strong>I'm new to Django. Actually have a custom model user and when try to python manage.py migrate i´m having the following error.
  i'm using django 1.11 and postgres database manager. 
  Note: In english, is it : "The relation &lt;&lt; Pages_account >> does not exist.</strong></p>
  
  <pre><code>Operations to perform:
  Apply all migrations: Pages, admin, auth, contenttypes, sessions
  Running migrations:
  Applying Pages.0002_auto_20170615_1214...Traceback (most recent call        last):
  File "C:\Users\cesar\AppData\Local\Programs\Python\Python36-32\lib\site-       packages\django\db\backends\utils.py", line 65, in execute
  return self.cursor.execute(sql, params)
  psycopg2.ProgrammingError: no existe la relación «Pages_account»
  
  
  The above exception was the direct cause of the following exception:
  
  Traceback (most recent call last):
  File "manage.py", line 22, in &lt;module&gt;
  execute_from_command_line(sys.argv)
  File "C:\Users\cesar\AppData\Local\Programs\Python\Python36-32\lib\site- packages\django\core\management\__init__.py", line 363, in execute_from_command_line
  utility.execute()
  File "C:\Users\cesar\AppData\Local\Programs\Python\Python36-32\lib\site- packages\django\core\management\__init__.py", line 355, in execute
  self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\cesar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\management\base.py", line 283, in run_from_argv
  self.execute(*args, **cmd_options)
  File "C:\Users\cesar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\management\base.py", line 330, in execute
  output = self.handle(*args, **options)
  File "C:\Users\cesar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\management\commands\migrate.py", line 204, in handle
  fake_initial=fake_initial,
  File "C:\Users\cesar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\migrations\executor.py", line 115, in migrate
  state = self._migrate_all_forwards(state, plan, full_plan, fake=fake,    fake_initial=fake_initial)
  File "C:\Users\cesar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\migrations\executor.py", line 145, in _migrate_all_forwards
  state = self.apply_migration(state, migration, fake=fake,   fake_initial=fake_initial)
  File "C:\Users\cesar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\migrations\executor.py", line 244, in apply_migration
  state = migration.apply(state, schema_editor)
  File "C:\Users\cesar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\migrations\migration.py", line 129, in apply
  operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
  File "C:\Users\cesar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\migrations\operations\fields.py", line 215, in database_forwards
  schema_editor.alter_field(from_model, from_field, to_field)
  File "C:\Users\cesar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\backends\base\schema.py", line 515, in alter_field
  old_db_params, new_db_params, strict)
  File "C:\Users\cesar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\backends\postgresql\schema.py", line 112, in _alter_field
  new_db_params, strict,
  File "C:\Users\cesar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\backends\base\schema.py", line 684, in _alter_field
  params,
  File "C:\Users\cesar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\backends\base\schema.py", line 120, in execute
  cursor.execute(sql, params)
  File "C:\Users\cesar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\backends\utils.py", line 80, in execute
  return super(CursorDebugWrapper, self).execute(sql, params)
  File "C:\Users\cesar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\backends\utils.py", line 65, in execute
  return self.cursor.execute(sql, params)
  File "C:\Users\cesar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\utils.py", line 94, in __exit__
  six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "C:\Users\cesar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\utils\six.py", line 685, in reraise
  raise value.with_traceback(tb)
  File "C:\Users\cesar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\backends\utils.py", line 65, in execute
  return self.cursor.execute(sql, params)
  django.db.utils.ProgrammingError: no existe la relación «Pages_account»
  </code></pre>
  
  <p><strong>When i try to add a superuser, that's python manage.py createsuperuser i´m having the same error.</strong> </p>
  
  <p><strong>This is my Pages.models.py:</strong></p>
  
  <pre><code>from django.conf import settings
  from django.db import models
  from django.contrib.auth.models import (
      BaseUserManager, AbstractBaseUser, PermissionsMixin
  )
  
  
  class AccountManager(BaseUserManager):
      def create_user(self, email, id, first_name, last_name , password):
          """
          Creates and saves a User with the given email, and other data
          """
          if not email:
              raise ValueError('Users must have an email address')
  
          user = self.model(
              email=self.normalize_email(email),
              id=id,
              first_name = first_name,
              last_name = last_name,
              password = password
          )
  
          user.set_password(password)
          user.save(using=self._db)
          return user
  
      def create_superuser(self, email, id, first_name, last_name , password):
          """
          Creates and saves a superuser with the given email, and other data
          """
          user = self.create_user(
              email,
              password=password,
              id = id,
              first_name = first_name,
              last_name = last_name
          )
          user.is_admin = True
          user.save(using=self._db)
          return user
  
  
  class Account(AbstractBaseUser,PermissionsMixin):
      email = models.EmailField(
          verbose_name='email',
          max_length=200,
          primary_key=True
      )
      id=models.BigIntegerField(unique=True)
      sign_up_date = models.DateField(auto_now_add=True,)
      is_active = models.BooleanField(default=True)
      is_admin = models.BooleanField(default=False)
      last_login = models.DateTimeField(auto_now=True)
      first_name = models.CharField(max_length=100)
      last_name = models.CharField(max_length=150)
  
      objects = AccountManager()
  
      USERNAME_FIELD = 'email'
      REQUIRED_FIELDS = ['id','first_name','last_name','password']
  
      def get_full_name(self):
          # The user is identified by their email address
          return self.first_name+self.last_name
  
      def get_short_name(self):
          # The user is identified by their email address
          return self.first_name
  
      def __str__(self):              # __unicode__ on Python 2
          return self.email
  
      def has_perm(self, perm, obj=None):
          "Does the user have a specific permission?"
          # Simplest possible answer: Yes, always
          return True
  
      def has_module_perms(self, app_label):
          "Does the user have permissions to view the app `app_label`?"
          # Simplest possible answer: Yes, always
          return True
  
      @property
      def is_staff(self):
          "Is the user a member of staff?"
          # Simplest possible answer: All admins are staff
          return self.is_admin
  
  #many to many Membership-Account and User generates Membership
  #Table which stores data
  class MembershipAccount(models.Model):
      members = models.ManyToManyField(settings.AUTH_USER_MODEL,through='Membership')
  
  class Membership(models.Model):
      payment_confirmed = models.BooleanField(default=False)
      date_joined= models.DateField()
      expired = models.BooleanField(default=False)
      membershipaccounts_id = models.ForeignKey(MembershipAccount, on_delete=models.CASCADE )
      accounts_id = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
  </code></pre>
  
  <p><strong>And this is my admin.py</strong> </p>
  
  <pre><code>from django import forms
  from django.contrib import admin
  from django.contrib.auth.models import Group
  from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
  from django.contrib.auth.forms import ReadOnlyPasswordHashField
  from .models import Account
  
  
  class UserCreationForm(forms.ModelForm):
      """A form for creating new users. Includes all the required
      fields, plus a repeated password."""
      password1 = forms.CharField(label='Password', widget=forms.PasswordInput)
      password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput)
  
      class Meta:
          model = Account
          fields = ('email', 'id','first_name','last_name','password')
  
      def clean_password2(self):
          # Check that the two password entries match
          password1 = self.cleaned_data.get("password1")
          password2 = self.cleaned_data.get("password2")
          if password1 and password2 and password1 != password2:
              raise forms.ValidationError("Passwords don't match")
          return password2
  
      def save(self, commit=True):
          # Save the provided password in hashed format
          user = super(UserCreationForm, self).save(commit=False)
          user.set_password(self.cleaned_data["password1"])
          if commit:
              user.save()
          return user
  
  
  class UserChangeForm(forms.ModelForm):
      """A form for updating users. Includes all the fields on
      the user, but replaces the password field with admin's
      password hash display field.
      """
      password = ReadOnlyPasswordHashField()
  
      class Meta:
          model = Account
          fields = ('email', 'password', 'id', 'first_name', 'last_name', 'is_active', 'is_admin')
  
      def clean_password(self):
          # Regardless of what the user provides, return the initial value.
          # This is done here, rather than on the field, because the
          # field does not have access to the initial value
          return self.initial["password"]
  
  
  class UserAdmin(BaseUserAdmin):
      # The forms to add and change user instances
      form = UserChangeForm
      add_form = UserCreationForm
  
      # The fields to be used in displaying the User model.
      # These override the definitions on the base UserAdmin
      # that reference specific fields on auth.User.
      list_display = ('email', 'id', 'is_admin')
      list_filter = ('is_admin',)
      fieldsets = (
          (None, {'fields': ('email', 'password')}),
          ('Personal info', {'fields': ('id','first_name', 'last_name')}),
          ('Permissions', {'fields': ('is_admin',)}),
      )
      # add_fieldsets is not a standard ModelAdmin attribute. UserAdmin
      # overrides get_fieldsets to use this attribute when creating a user.
      add_fieldsets = (
          (None, {
              'classes': ('wide',),
              'fields': ('email', 'id', 'first_name', 'last_name', 'password1', 'password2')}
          ),
      )
      search_fields = ('email','id','first_name','last_name')
      ordering = ('id',)
      filter_horizontal = ()
  
  # Now register the new UserAdmin...
  admin.site.register(Account, UserAdmin)
  </code></pre>
  
  <p><strong>Last, but not least, this is my setting.py file.</strong></p>
  
  <pre><code>INSTALLED_APPS = [
      'Pages.apps.PagesConfig',
      'django.contrib.admin',
      'django.contrib.auth',
      'django.contrib.contenttypes',
      'django.contrib.sessions',
      'django.contrib.messages',
      'django.contrib.staticfiles',
  ]
  some other code..
  AUTH_USER_MODEL = 'Pages.Account'
  </code></pre>