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.
我昨天 运行 进行了一些假迁移,并且昨天由于外键约束和其他类似错误,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 的回答,我被指向
[d]eletes stale content types (from deleted models) in your database. Any objects that depend on the deleted content types will also be deleted.