Revert "fix: value_mode read from field definition, not filter_item - removed item_value_mode from filters loops (2 places) - check_value(f, fv, dv) now falls back to f.value_mode per field - fixes: filter-level value_mode:between was applied to ALL fields including model (string), causing between parse error on model name"
This reverts commit 1e65451da4e97d77dc072113e2d1aab06fda80c0.
This commit is contained in:
parent
1e65451da4
commit
03a0bea51f
@ -644,6 +644,7 @@ order by b.enabled_date desc"""
|
||||
if 'unit_prices' in filter_item:
|
||||
continue # tiered定价项,不在此处检查
|
||||
item_ok = True
|
||||
item_value_mode = filter_item.get('value_mode')
|
||||
for fk, fv in filter_item.items():
|
||||
if fk in ('unit_prices', 'value_mode'):
|
||||
continue
|
||||
@ -655,7 +656,7 @@ order by b.enabled_date desc"""
|
||||
if data_value is None:
|
||||
continue # 数据中没有该键,视为匹配
|
||||
try:
|
||||
flg = check_value(f, fv, data_value)
|
||||
flg = check_value(f, fv, data_value, item_value_mode)
|
||||
if not flg:
|
||||
item_ok = False
|
||||
break
|
||||
@ -683,6 +684,7 @@ order by b.enabled_date desc"""
|
||||
# 处理 filters 中的区间定价(查找匹配的 unit_prices)
|
||||
if 'filters' in p:
|
||||
for filter_item in p['filters']:
|
||||
item_value_mode = filter_item.get('value_mode')
|
||||
for fk, fv in filter_item.items():
|
||||
if fk in ('unit_prices', 'value_mode'):
|
||||
continue
|
||||
@ -694,7 +696,7 @@ order by b.enabled_date desc"""
|
||||
if data_value is None:
|
||||
continue
|
||||
try:
|
||||
flg = check_value(f, fv, data_value)
|
||||
flg = check_value(f, fv, data_value, item_value_mode)
|
||||
if flg and 'unit_prices' in filter_item:
|
||||
unit_price = filter_item['unit_prices']
|
||||
except:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user