小编chi*_*983的帖子

如何让涉及跨外键应用唯一索引的 Django 迁移向后移动?

今天,我的任务是修复一堆迁移,以便它们可以从头开始完全前进和后退,而不依赖于从生产中的数据库转储开始。我遇到了这个。

class Migration(migrations.Migration):

dependencies = [
    migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ('content', '0038_merge'),
]

operations = [
    migrations.CreateModel(
        name='UserRoles',
        fields=[
            ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
            ('role', models.CharField(max_length=100, choices=[(b'editor', b'Editor Role'), (b'read_only', b'Read Only'), (b'writer', b'Writer Role')])),
            ('site', models.ForeignKey(related_name='site', to='content.Site')),
            ('user', models.ForeignKey(related_name='user_site_roles', to=settings.AUTH_USER_MODEL)),
        ],
    ),
    migrations.AlterUniqueTogether(
        name='userroles',
        unique_together=set([('user', 'site')]),
    ),
]
Run Code Online (Sandbox Code Playgroud)

向前和向后,这是它生成的 SQL。

BEGIN;
CREATE TABLE `content_userroles` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `role` varchar(100) NOT NULL, `site_id` integer NOT NULL, `user_id` integer NOT NULL);
ALTER TABLE `content_userroles` ADD CONSTRAINT `content_userroles_user_id_798e435c65731cb9_uniq` UNIQUE (`user_id`, `site_id`); …
Run Code Online (Sandbox Code Playgroud)

python mysql django unique-constraint django-migrations

7
推荐指数
0
解决办法
1768
查看次数