Django taggit迁移在AlterUniqueTogether失败

Django taggit迁移在AlterUniqueTogether失败,django,django-taggit,Django,Django Taggit,我正在尝试迁移使用jazzband Django taggit的Django应用程序 我得到的错误是: django.db.utils.IntegrityError: could not create unique index "taggit_taggeditem_content_type_id_object_i_4bb97a8e_uniq" DETAIL: Key (content_type_id, object_id, tag_id)=(41, 596, 242) is duplicate

我正在尝试迁移使用jazzband Django taggit的Django应用程序 我得到的错误是:

django.db.utils.IntegrityError: could not create unique index "taggit_taggeditem_content_type_id_object_i_4bb97a8e_uniq"
DETAIL:  Key (content_type_id, object_id, tag_id)=(41, 596, 242) is duplicated.
有关迁移内容如下:

        migrations.AlterUniqueTogether(
            name="taggeditem", unique_together={("content_type", "object_id", "tag")}
        )

这将转换为以下SQL:

ALTER TABLE "taggit_taggeditem" ADD CONSTRAINT "taggit_taggeditem_content_type_id_object_i_4bb97a8e_uniq" UNIQUE ("content_type_id", "object_id", "tag_id");
COMMIT;
检查有问题的表格,我确实得到:

# SELECT * FROM public.taggit_taggeditem WHERE tag_id=242 ORDER BY object_id;
  id  | tag_id | object_id | content_type_id 
------+--------+-----------+-----------------
  691 |    242 |       356 |              41
 2904 |    242 |       356 |              41
  680 |    242 |       486 |              41
 2893 |    242 |       486 |              41
  683 |    242 |       596 |              41
 2896 |    242 |       596 |              41

解决django.db.utils.IntegrityError错误并成功完成迁移的建议方法是什么?我认为同样的情况也会发生在object_id 486和356(+更多)上

在移植模型之前,您应该先做一个修改。因此,您最好先删除迁移文件,然后使用以下方法进行数据迁移:

python3 manage.py makemigrations --empty app_name

我(强烈)建议在运行此操作之前首先备份数据库,因为数据迁移始终可能存在复杂的问题。

在迁移模型之前,您应该先进行备份。因此,您最好先删除迁移文件,然后使用以下方法进行数据迁移:

python3 manage.py makemigrations --empty app_name

我(强烈)建议在运行此操作之前首先备份数据库,因为数据迁移始终可能存在复杂的问题。

您应该首先过滤掉重复项。例如,我只保留id 691和删除2904,因为它们都具有相同的标记id、对象id和内容类型id,对吗?你应该先过滤掉重复的。例如,我只保留id 691和删除2904,因为它们都有相同的标记id、对象id和内容类型id,对吗?
python3 manage.py makemigrations app_name