重命名auth_user会在新设置中中断迁移

fre*_*ley 7 django django-south

下面是什么好像很好的建议,我从Django的迁移内置auth.User到我自己app.User做一个重命名迁移auth_userapp_user.到目前为止一切顺利,这很好.当我设置一台新机器时会出现问题.

在我的settings.pyAUTH_USER_MODEL = 'app.User'.因此,当我运行时syncdb,auth_user不会创建表,所以当我migrate,该迁移失败时.

我发现的唯一方法是修改AUTH_USER_MODEL指向auth.User,运行syncdb和迁移,直到重命名迁移,然后更改AUTH_USER_MODEL回来,然后运行其余的迁移.

有没有解决这个问题的方法?

fre*_*ley 1

根据此处提出的其他答案的想法,这是一个有效的解决方案:

def forwards(self, orm):
    if 'auth_user' not in db.execute('SHOW TABLES'):
        db.create_table('app_user', (
            (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
            ('password', self.gf('django.db.models.fields.CharField')(max_length=128)),
            ('last_login', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now)),
            ('is_superuser', self.gf('django.db.models.fields.BooleanField')(default=False)),
            ('username', self.gf('django.db.models.fields.CharField')(unique=True, max_length=30)),
            ('first_name', self.gf('django.db.models.fields.CharField')(max_length=30, blank=True)),
            ('last_name', self.gf('django.db.models.fields.CharField')(max_length=30, blank=True)),
            ('email', self.gf('django.db.models.fields.EmailField')(max_length=75, blank=True)),
            ('is_staff', self.gf('django.db.models.fields.BooleanField')(default=False)),
            ('is_active', self.gf('django.db.models.fields.BooleanField')(default=True)),
            ('date_joined', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now)),
        ))
        db.send_create_signal(app', ['User'])
    else:
        db.rename_table('auth_user', 'app_user')
Run Code Online (Sandbox Code Playgroud)