【发布时间】:2020-06-30 08:03:35
【问题描述】:
这是我的帖子preventing crud operations on django model的扩展
问题的简述,我目前使用一个名为django-river 的包在我的应用程序中实现工作流系统。问题是它们没有预定义的 'start' 、 'dropped' 、 'completed' 状态。它们的状态存储为 django 模型实例。这意味着我的应用程序无法以编程方式区分状态。因此,这些状态的标签必须硬编码到我的程序中(或者是吗?也许有人对此有解决方案?)
假设除了将状态硬编码到我的应用程序中之外没有其他解决方案,这意味着我将不得不阻止用户更新或删除我最初预先创建的这些状态。
我的想法是在 django 模型的 save 方法中进行验证检查。此检查将检查 State 模型的前 3 个实例是否始终为 start 、 deactivated 和 completed 并且顺序相同。这将阻止每当用户尝试在 ORM 级别更改项目时检查通过。
但是,这似乎有两个问题:
-
我相信 django admin 没有运行模型类
save方法 -
只要他们改变状态的方式不通过
save()方法,人们仍然可以改变状态。来自 DB SQL 命令的 AKA
虽然不太可能发生,但更改名称会“破坏”我的应用程序,因此我希望非常确定没有人可以编辑和更改这 3 个预定义状态。
有没有万无一失的方法来做到这一点?
【问题讨论】:
标签: django