Django 的管理员组权限列表中的额外表

Extra tables in Django's admin group permission list

我昨天 运行 进行了一些假迁移,并且昨天由于外键约束和其他类似错误,Django 在重命名一些模型后不断向我抛出一些错误,并且昨天直接重命名了我的数据库中的一些表。

我知道这不是标准程序,很容易把事情搞砸。不过,它确实为我解决了所有问题,而无需清除数据库,就像我几乎下定决心要做的那样。

无论如何,正如我所说,一切都很好,期待组管理中 'available permissions' 中显示的列表。以下(和其他)表不在数据库中,甚至没有以应用程序名称为前缀:

这些来自哪里?我怎样才能摆脱它们?

您可以使用 django shell 像这样获得旧权限:

from django.contrib.auth.models import Permission

# Assume that you have all name of the old permissions  to delete in a list
permission_old = ['permission_name_1', 'permission_name_2', ...]

for perm in Permission.objects.all():
    if str(perm) in permission_old:
        print(perm)
        perm.delete()

阅读

感谢@Rvector 的回答,我被指向 where made me aware of the remove_stale_contenttypes 命令 which

[d]eletes stale content types (from deleted models) in your database. Any objects that depend on the deleted content types will also be deleted.