首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flow.switch().case() Django-Viewflow中的非布尔比较

flow.switch().case() Django-Viewflow中的非布尔比较
EN

Stack Overflow用户
提问于 2019-02-21 05:10:30
回答 1查看 101关注 0票数 0

我有一个标准的视流流程,在其中一个状态下,我想根据在其中一个字段中引入的文本值来拆分我的流程。我在models.py中这样定义了我感兴趣的领域

estado_de_aprobacion= models.CharField(max_length=15,choices=REVIEW_CHOICES)

我的选择:

代码语言:javascript
复制
REVIEW_CHOICES = (
   ('APROBACION_FINAL', 'Aprobar definitivamente'),
   ('APROBACION_NUEVO_REVISOR', 'Enviar a otro revisor'),
   ('DEVOLVER_EJECUTOR','Devolver al ejecutor')
)

因此,基本上会显示一个下拉列表,以便用户可以选择其中一个选项,并在此基础上在流程中应用以下in拆分:

代码语言:javascript
复制
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表达式返回包含在指定的进程属性中的值,但由于比较不起作用,我认为这是错误的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-22 00:51:20

让我们解开cond值中发生的事情。

代码语言:javascript
复制
cond=((lambda act: act.process.estado_de_aprobacion)=='APROBACION_FINAL')

(lambda act: act.process.estado_de_aprobacion)返回一个从act中提取相关字段的函数。然后将其与=='APROBACION_FINAL'进行比较,后者总是会失败,因为您正在比较一个lambda函数和一个字符串。因此,传递给函数的cond的实际值是False

我假设cond需要是一个返回true或false的函数?在这种情况下,您应该在lambda函数中进行比较。

代码语言:javascript
复制
cond=lambda act: act.process.estado_de_aprobacion=='APROBACION_FINAL'

原始代码中的提取括号是不必要的,实际上可能是问题的根源。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54795288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档