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