haha
This commit is contained in:
@@ -109,15 +109,26 @@ class FilterConfigSerializer(serializers.ModelSerializer):
|
||||
read_only_fields = ["id", "created_at", "updated_at"]
|
||||
|
||||
def to_internal_value(self, data):
|
||||
"""请求中兼容 minAmount/maxAmount、最小金额/最大金额 等别名;支持 multipart/form-data(QueryDict)。"""
|
||||
# multipart/form-data 时 request.data 是 QueryDict,需转为普通 dict 并统一处理
|
||||
data = dict(data) if data is not None else {}
|
||||
"""请求中兼容 minAmount/maxAmount 等别名;支持 multipart/form-data(QueryDict/多值列表)。"""
|
||||
if data is None:
|
||||
data = {}
|
||||
else:
|
||||
data = dict(data)
|
||||
# multipart 解析后字段值可能是 list(如 ["测试配置"]),需展平为标量
|
||||
for key in list(data.keys()):
|
||||
val = data[key]
|
||||
if isinstance(val, (list, tuple)):
|
||||
data[key] = val[0] if len(val) > 0 else ""
|
||||
for alias, canonical in FILTER_AMOUNT_ALIASES.items():
|
||||
if alias in data and canonical not in data:
|
||||
data[canonical] = data.pop(alias)
|
||||
# 请求里 is_active 可能是字符串 "true"/"false"(表单项均为字符串)
|
||||
if "is_active" in data and isinstance(data.get("is_active"), str):
|
||||
data["is_active"] = data["is_active"].lower() in ("true", "1", "yes", "是")
|
||||
# 请求里 is_active 可能是字符串 "true"/"false" 或单元素列表
|
||||
raw = data.get("is_active")
|
||||
if raw is not None:
|
||||
if isinstance(raw, (list, tuple)):
|
||||
raw = raw[0] if raw else ""
|
||||
if isinstance(raw, str):
|
||||
data["is_active"] = raw.lower() in ("true", "1", "yes", "是")
|
||||
return super().to_internal_value(data)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user