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

Python flow.switch().case()Django Viewflow中的非布尔比较,python,django,workflow,django-viewflow,Python,Django,Workflow,Django Viewflow,我有一个standar viewflow流程,在其中一个状态下,我希望根据其中一个字段中引入的文本值拆分流程。我在models.py中这样定义了我感兴趣的领域 estado_de_aprobacion=models.CharField(最大长度=15,选项=REVIEW_选项) 我的选择: REVIEW_CHOICES = ( ('APROBACION_FINAL', 'Aprobar definitivamente'), ('APROBACION_NUEVO_REVISOR', '

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

estado_de_aprobacion=models.CharField(最大长度=15,选项=REVIEW_选项)

我的选择:

REVIEW_CHOICES = (
   ('APROBACION_FINAL', 'Aprobar definitivamente'),
   ('APROBACION_NUEVO_REVISOR', 'Enviar a otro revisor'),
   ('DEVOLVER_EJECUTOR','Devolver al ejecutor')
)
因此,基本上会显示一个下拉列表,用户可以选择其中一个选项,并在此基础上在流中应用以下拆分:

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

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

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

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

cond=lambda act: act.process.estado_de_aprobacion=='APROBACION_FINAL'
原始代码中的提取括号是不必要的,事实上可能是问题的根源