问题标签 [django-fsm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - django-fsm:权限不引发异常
我有基于源和目标规则的转换装饰器在django-fsm(有限状态机)中运行良好。现在我正在尝试添加权限处理。这看起来很简单,但似乎无论我做什么,都会执行转换,而不管用户的权限或缺乏权限。lambda
根据文档,我尝试过使用 Django 权限字符串,并且尝试过使用。我已经尝试了所有这些:
和
并且,作为一个双重检查,因为permission
应该响应任何返回 True/False 的可调用,简单地说:
在访问转换时,应该TransitionNotAllowed
为所有用户提出一个。但是不——即使是没有权限的基本用户仍然可以执行转换(claim.approve()
)。
为了证明我有正确的权限字符串:
打印错误。我正在进行如下验证(适用于源/目标):
视图处理程序是标准:
我错过了什么?谢谢。
django - 状态改变后 django-fsm 是否调用 save() 方法?
我正在使用 django_fsm 来管理模型中的状态。我的模型看起来像:
我应该将 self.save() 添加到 change_state 吗?会叫吗?
django - 暂时录制到永久录制
我正在研究创建订单的工作流程。这是我到目前为止得到的
我需要实现一个标准的工作流程,其中包含三个线性步骤,即Select Plan & Preference
、Personal Information
和Review & Payment
。
选择计划和偏好:客户可以选择一个计划以及一些工艺产品。
个人信息:客户将填写与其居住地、电话号码、名字、姓氏、电子邮件等相关的字段
查看和付款:如有必要,创建一个帐户,查看他/她的订单并支付与当前订单相关的付款。
粗略地说,如果付款被接受(即电子商务),将在工作流程的最后一步记录一个帐户和一个订单。因此,在过渡期间,我不希望将信息保存在我的数据库中。过渡期间如何临时记录信息?如果我可以暂时存储该信息,一旦接受付款,我如何将信息保存在数据库中?请注意,付款是工作流程的最后一步。
更新
我不想保存用户的信息,我会把它放在缓存中。将用户信息字典保存一段时间。缓存的密钥可以是购买订单,或者我可以使用个人信息中的某些内容,我需要缓存的密钥。
然后,当我保存信息时,在最后一步中我可以获取字典。
我找到了该解决方案,但我不知道它是否是最佳解决方案。一般来说,我知道继续跟踪该信息是相关的,但是我受到该项目的预算(即存储、性能等)的限制,所以我做不到。
python - Django 管理父模型的状态,基于“子模型”(对父模型具有 fk 的模型)
设计一个需要模型状态转换的系统,该模型基于其他模型的转换。
我正在使用 Django FSM
例子:
用例:
Foo 可以有以下状态 - new、draft、complete、pending_approval、approved Foo 可以有多个 Bars
酒吧可以有以下状态 - 草稿,完成
Foo 应该在所有 Bar 完成后自动完成,如何实现
python - 在 django 中使用 django-有限状态机时如何实现基于类的视图
我正在制作一个请假流程,申请人将申请请假,请假将排队,以便批准者批准或拒绝请假申请。我遇到了django-fsm和drf-fsm-transitions,我想到了实现这种工作流程。我正在使用django 1.11
++python3
来django_rest_framework
构建我的 API。
在我已导入的 django 应用程序from django_fsm import transition, FSMIntegerField
中models.py
。
离开类
过渡
然后我在休假类中实现了以下转换:
然后在我导入的视图中from drf_fsm_transitions.viewset_mixins import get_viewset_transition_action_mixin
我在运行服务器时收到以下日志:
这是我的视图类的样子:
在 django 中使用 django-fsm 时如何实现基于类的视图
python - Django-fsm:由于额外的方法参数,动态目标失败
https://github.com/kmmbvnr/django-fsm#target 文档中的原始示例:
我正在使用上述方法来解决动态目标状态。我的功能如下所示:
我有一个额外by=None
的用于记录目的。但是,当我运行此功能时,它会说:
我不明白为什么 lambda 正在考虑我什至没有在 lambda 中声明的参数。如果我by=None
从 make_active 函数中删除,我可以运行它,但我不能这样做,因为它是一个重要参数。
请帮忙。
django - 在 Django 中编辑动态选择字段
我有一个带有Post
模型的标准 Django 博客,仅在我添加了ManyToManyField
for的模型上approvers
,其想法是后端将帖子传递给 2 个或更多批准者以在发布内容之前确认内容。
我可能会学习django-fsm
为模型创建一个有限状态机Post
来管理它是否是草稿/正在批准/已发布,但我希望能够更改该approvers
字段,以便批准者(用户)的数量和顺序可由用户动态更改。
做这个的最好方式是什么?我想我可以尝试将approvers
字段更改为 aJSONField
以便用户可以添加/删除/更改批准者的顺序,然后在前端处理解释并编写一些函数来与 接口django-fsm
,但这感觉它混淆了太多东西。我错过了一条更简单的路线吗?
python - 如何创建具有动态步数的有限状态机
我有一个简单的线性工作流程,其中单个任务将有一个批准者列表,它必须通过(线性,依次)进行确认,然后才能完成。
我将其设计为将User
模型用于批准者,另外还有 2 个模型:
Task
用于管理工作流中各个任务细节的模型;和- 显式管理and
TaskStep
之间关系的模型(而不是依赖 Django 自动填充)。Tasks
Approver
我想使用django-fsm创建一个有限状态机来跟踪工作流中每个任务的状态。
我知道如果我预先定义每个工作流程中的批准者数量,我可以轻松做到这一点。例如,如果它是 3,我可以简单地将它放在一个整数字段中,然后创建每个批准者会调用的关联函数:
但是,假设我希望允许用户自己定义批准者的数量(以及因此的步骤数)。我该怎么办?我会一直保持这种线性发展,而不是平行发展。
有没有办法用 django-fsm 做到这一点,还是我看错了?我想也许试图STATUS_CHOICES
通过循环的数量/长度来动态创建代理,approvers
但我不知道如何开始。
也许是and中的一个lamba
函数?source
target
FSMIntegerField
python - 为什么我不能在这里使用@staticmethod?
我正在使用 django-fsm 来实现状态机。代码看起来像
它正在工作。在它所属的类之外有那个小实用函数会损害代码的可读性,所以我尝试了
这是行不通的。不知道user_ok_to_check_me
现在做什么,它的行为就像一个无操作函数总是返回 True 即使它所做的只是return False
为什么?有没有办法在类中声明这个小函数?(使用时间有点长 lambda instance, user:
)
django - Django FSM - get_available_FIELD_transitions
使用 django_fsm 我需要获取可用的转换列表。使用以下代码时,我确实得到了<generator object get_available_FIELD_transitions at 0x10b9ba660>
相反,我想获得一个转换列表,例如['PENDING', 'CLOSED']