gpt4 book ai didi

Django元权限

转载 作者:行者123 更新时间:2023-12-01 13:52:45 24 4
gpt4 key购买 nike

我通过在 Django 模型中使用“meta”来添加自定义权限。请参阅下面的简单示例。

模型.py

class Meta:
permissions = (
("can_do_stuff", "Can do stuff"),
)

这很好用,我将上面的代码添加到模型中,然后进行迁移,然后迁移它们。权限已创建并可供使用。

但是,当我从模型的“元”部分删除(或修改)该权限时,再次 makemigrations , migrate权限(已删除/修改)不会从 Django 系统中删除。

如果我已经 100% 弄清了我的权限系统,这不会成为问题,但是我在学习的过程中一直在微调事情,因此权限列表因“遗留”权限而变得困惑。

我正在频繁地开发和发布新版本以供生产使用,并且生产中的权限变得困惑,我不能像在开发中一样删除数据库。

有推荐的方法吗?

我可以直接从数据库中手动删除旧权限(这似乎只是我需要删除的一个条目,而且似乎不会引起任何问题)。这似乎是一种糟糕的做法,容易出错,被遗忘等。

最佳答案

您是否尝试过向后迁移而不是向前迁移?

<app_label> <migrationname>: Brings the database schema to a state where the named migration is applied, but no later migrations in the same app are applied. This may involve unapplying migrations if you have previously migrated past the named migration. Use the name zero to unapply all migrations for an app.



我的猜测是 makemigrations命令扫描模型的权限元,并为每个丢失的权限在权限表中生成一个“插入”SQL,它实际上并没有在迁移脚本中进行双向同步。

但是迁移脚本可以通过对每个“插入”的“删除”语句来恢复更改。

所以尝试:
python manage.py migrate the_app the_migration_before_the_last

如果这也不起作用,请向 Django 项目提交错误。

关于Django元权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31352417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com