You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QuickBase Pipeline中Jinja表达式IN对负数列表不生效问题

问题解决:Jinja中IN表达式匹配负数失败

问题场景

我们需要根据用户选择的通知触发时机(到期前1天、到期日、到期后1天、到期后1周)触发通知,这些选项对应转换为FollowUp Days字段的1、0、-1、-7;同时有计算字段FollowUp Diff表示到期日与当前日的天数差。需求是将两个字段转为字符串后用Jinja的IN表达式匹配,但发现负数(如-1)匹配失败,正数场景正常。尝试过添加| string过滤器、给负数加括号、使用{{'-1'}}等方法均无效,相关代码如下:

{# Nbr of days from Due Date #}
{% if a.follow_up_diff in a.follow_up_days | list %}
    True
{% endif %}

{# Nbr of days from Due Date #}
{% if a.follow_up_diff | string in a.follow_up_days | string | list %}
    True
{% endif %}

问题原因

第二种写法的错误在于:a.follow_up_days | string | list是把整个follow_up_days集合转为一个字符串(比如集合[-1, -7]会变成"[-1, -7]"),再拆分成字符列表,得到的是['[', '-', '1', ',', ' ', '-', '7', ']'],自然无法匹配"-1"这种完整的字符串。而第一种写法如果follow_up_diff是字符串类型、follow_up_days是数值类型,也会因类型不匹配导致负数无法匹配。

解决方案

方案1:字符串类型统一匹配

将follow_up_days中的每个元素单独转为字符串,再组成列表,然后和转为字符串的follow_up_diff匹配:

{# 将follow_up_days的每个元素转为字符串后组成列表 #}
{% set follow_up_days_str = a.follow_up_days | map('string') | list %}
{% if a.follow_up_diff | string in follow_up_days_str %}
    True
{% endif %}

方案2:数值类型统一匹配

如果两个字段原本都是数值类型(或可转为数值),直接统一转为整数后匹配,避免字符串转换的问题:

{# 将两个字段都转为整数后匹配 #}
{% set follow_up_days_int = a.follow_up_days | map('int') | list %}
{% if a.follow_up_diff | int in follow_up_days_int %}
    True
{% endif %}

这两种方案都能解决负数无法匹配的问题,优先推荐方案2,因为数值匹配更直接,避免字符串转换可能带来的额外问题。

内容的提问来源于stack exchange,提问作者Gabe Fig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 16:45:07