flow.switch().case() Django-Viewflow 中的非布尔比较
Non Boolean comparisons in flow.switch().case() Django-Viewflow
我有一个标准的 viewflow 流程,在其中一种状态下,我想根据其中一个字段中引入的文本值拆分我的流程。我在 models.py
中以这种方式定义了我的兴趣领域
estado_de_aprobacion= models.CharField(max_length=15, 选择=REVIEW_CHOICES)
我的选择:
REVIEW_CHOICES = (
('APROBACION_FINAL', 'Aprobar definitivamente'),
('APROBACION_NUEVO_REVISOR', 'Enviar a otro revisor'),
('DEVOLVER_EJECUTOR','Devolver al ejecutor')
)
所以基本上发生的事情是显示一个下拉列表,以便用户可以选择其中一个选项,并基于此我在流程中应用 followinf 拆分:
split =(
#If(lambda activation: activation.process.aprobacion_final)
flow.Switch()
.Case(this.end, cond=((lambda act: act.process.estado_de_aprobacion)=='APROBACION_FINAL'))
.Case(this.revisor_check, cond=((lambda act: act.process.estado_de_aprobacion)=='APROBACION_NUEVO_REVISOR'))
.Case(this.ejecutar, cond=((lambda act: act.process.estado_de_aprobacion)=='DEVOLVER_EJECUTOR'))
)
我假设 lamba 表达式 returns 包含在指定过程属性中的值,但由于比较不起作用,我认为它是错误的。
让我们解开 cond
值中发生的事情。
cond=((lambda act: act.process.estado_de_aprobacion)=='APROBACION_FINAL')
(lambda act: act.process.estado_de_aprobacion)
returns 从 act
中提取相关字段的函数。
然后你将它与 =='APROBACION_FINAL'
进行比较,这总是会失败,因为你正在比较一个 lambda 函数和一个字符串。
所以传递给函数的 cond
的实际值是 False
.
我假设 cond
需要是一个 returns 对或错的函数?在这种情况下,您应该在 lambda 函数中进行比较。
cond=lambda act: act.process.estado_de_aprobacion=='APROBACION_FINAL'
原始代码中的提取括号是不必要的,实际上可能是问题的根源。
我有一个标准的 viewflow 流程,在其中一种状态下,我想根据其中一个字段中引入的文本值拆分我的流程。我在 models.py
中以这种方式定义了我的兴趣领域estado_de_aprobacion= models.CharField(max_length=15, 选择=REVIEW_CHOICES)
我的选择:
REVIEW_CHOICES = (
('APROBACION_FINAL', 'Aprobar definitivamente'),
('APROBACION_NUEVO_REVISOR', 'Enviar a otro revisor'),
('DEVOLVER_EJECUTOR','Devolver al ejecutor')
)
所以基本上发生的事情是显示一个下拉列表,以便用户可以选择其中一个选项,并基于此我在流程中应用 followinf 拆分:
split =(
#If(lambda activation: activation.process.aprobacion_final)
flow.Switch()
.Case(this.end, cond=((lambda act: act.process.estado_de_aprobacion)=='APROBACION_FINAL'))
.Case(this.revisor_check, cond=((lambda act: act.process.estado_de_aprobacion)=='APROBACION_NUEVO_REVISOR'))
.Case(this.ejecutar, cond=((lambda act: act.process.estado_de_aprobacion)=='DEVOLVER_EJECUTOR'))
)
我假设 lamba 表达式 returns 包含在指定过程属性中的值,但由于比较不起作用,我认为它是错误的。
让我们解开 cond
值中发生的事情。
cond=((lambda act: act.process.estado_de_aprobacion)=='APROBACION_FINAL')
(lambda act: act.process.estado_de_aprobacion)
returns 从 act
中提取相关字段的函数。
然后你将它与 =='APROBACION_FINAL'
进行比较,这总是会失败,因为你正在比较一个 lambda 函数和一个字符串。
所以传递给函数的 cond
的实际值是 False
.
我假设 cond
需要是一个 returns 对或错的函数?在这种情况下,您应该在 lambda 函数中进行比较。
cond=lambda act: act.process.estado_de_aprobacion=='APROBACION_FINAL'
原始代码中的提取括号是不必要的,实际上可能是问题的根源。