title: Error when reverting an auto-generated migration for renaming a table in Django
body: <p>I'm having issues with <em>reverting</em> a Django (1.8.7) migration that contains the renaming of a table. Even though it seems to be able to rename it in Postgres, it then tries to add a constraint using the <em>old</em> table name.</p>
  
  <p>Here's the traceback:</p>
  
  <pre><code>    cursor.execute(sql, params)
    File "/Users/myworkspace/projects/xxx/venv/lib/python3.5/site-packages/django/db/backends/utils.py", line 79, in execute
      return super(CursorDebugWrapper, self).execute(sql, params)
    File "/Users/myworkspace/projects/xxx/venv/lib/python3.5/site-packages/django/db/backends/utils.py", line 64, in execute
      return self.cursor.execute(sql, params)
    File "/Users/myworkspace/projects/xxx/venv/lib/python3.5/site-packages/django/db/utils.py", line 97, in __exit__
      six.reraise(dj_exc_type, dj_exc_value, traceback)
    File "/Users/myworkspace/projects/xxx/venv/lib/python3.5/site-packages/django/utils/six.py", line 658, in reraise
      raise value.with_traceback(tb)
    File "/Users/myworkspace/projects/xxx/venv/lib/python3.5/site-packages/django/db/backends/utils.py", line 64, in execute
      return self.cursor.execute(sql, params)
  django.db.utils.ProgrammingError: relation "team_membershiprole" does not exist
  </code></pre>
  
  <p>If you take a look at the SQL it generates,</p>
  
  <pre><code>[...]
  ALTER TABLE "team_membershiprole" RENAME TO "team_leadershiprole";
  [...]
  ALTER TABLE "team_leadershipteammember" 
      ADD CONSTRAINT "team_l_role_id_xxx" 
      FOREIGN KEY ("role_id") REFERENCES "team_membershiprole" ("id")     
      DEFERRABLE INITIALLY DEFERRED;
  [...]
  
  COMMIT;
  </code></pre>
  
  <p>You can see that there's a reference to <code>team_membershiprole</code>, even though that table doesn't exist anymore (it was renamed). Here's the migration code:</p>
  
  <pre><code># -*- coding: utf-8 -*-
  from __future__ import unicode_literals
  
  from django.db import models, migrations
  
  
  class Migration(migrations.Migration):
  
      dependencies = [
          ('core', '0023_xxx'),
          ('team', '0009_xxx2'),
      ]
  
      operations = [
          migrations.CreateModel(
              name='TeamMembership',
              fields=[
                  ('id', models.AutoField(serialize=False, auto_created=True, verbose_name='ID', primary_key=True)),
                  ('team', models.ForeignKey(related_name='members', to='team.Team')),
                  ('member', models.ForeignKey(to='core.Member')),
              ],
          ),
          migrations.RenameModel(
              old_name='LeadershipRole',
              new_name='MembershipRole',
          ),
          migrations.RemoveField(
              model_name='leadershipteammember',
              name='team',
          ),
          migrations.RemoveField(
              model_name='leadershipteammember',
              name='member',
          ),
          migrations.RemoveField(
              model_name='leadershipteammember',
              name='role',
          ),
          migrations.DeleteModel(
              name='LeadershipTeamMember',
          ),
          migrations.AddField(
              model_name='teammembership',
              name='role',
              field=models.ForeignKey(to='team.MembershipRole'),
          ),
      ]
  </code></pre>
  
  <p>I understand this is might be a Django migrations bug, but is there any way to work around it?</p>