修复了属性取值问题

This commit is contained in:
2026-06-19 15:13:00 +08:00
parent a699037826
commit df927e141d
3 changed files with 29 additions and 19 deletions

View File

@@ -2312,8 +2312,8 @@ class AddProductView(APIView):
yaoqiuleixing=yaoqiuleixing,
huiyuan_id=huiyuan_id_val,
yongjin=yongjin_val,
kaioi_ewai_PlayerCommission=kaioi_ewai,
ewai_PlayerCommission=ewai_fencheng,
kaioi_ewai_dashou_fencheng=kaioi_ewai,
ewai_dashou_fencheng=ewai_fencheng,
paixu=0, # 新商品默认排序最后
shenhezhuangtai=1, # 正常状态
)
@@ -2463,8 +2463,8 @@ class GetProductDetailView(APIView):
'huiyuan_id': product.huiyuan_id,
'yongjin': str(product.yongjin) if product.yongjin is not None else None,
'tupian_url': product.tupian_url,
'kaioi_ewai_PlayerCommission': product.kaioi_ewai_PlayerCommission,
'ewai_PlayerCommission': str(product.ewai_PlayerCommission) if product.ewai_PlayerCommission is not None else '0',
'kaioi_ewai_PlayerCommission': product.kaioi_ewai_dashou_fencheng,
'ewai_PlayerCommission': str(product.ewai_dashou_fencheng) if product.ewai_dashou_fencheng is not None else '0',
'create_time': product.create_time.isoformat() if product.create_time else None,
'shenhezhuangtai': product.shenhezhuangtai,
}
@@ -2648,8 +2648,8 @@ class UpdateProductView(APIView):
product.yaoqiuleixing = yaoqiuleixing
product.huiyuan_id = huiyuan_id
product.yongjin = yongjin
product.kaioi_ewai_PlayerCommission = kaioi_ewai
product.ewai_PlayerCommission = ewai_fencheng
product.kaioi_ewai_dashou_fencheng = kaioi_ewai
product.ewai_dashou_fencheng = ewai_fencheng
product.jieshao = jieshao
product.xiadan_xuzhi = xiadan_xuzhi
product.tupian_url = tupian_url
@@ -5565,8 +5565,8 @@ class ProductListView(APIView):
'yaoqiuleixing': p.yaoqiuleixing,
'huiyuan_id': p.huiyuan_id or '',
'yongjin': p.yongjin,
'kaioi_ewai_PlayerCommission': p.kaioi_ewai_PlayerCommission,
'ewai_PlayerCommission': p.ewai_PlayerCommission,
'kaioi_ewai_PlayerCommission': p.kaioi_ewai_dashou_fencheng,
'ewai_PlayerCommission': p.ewai_dashou_fencheng,
'create_time': p.create_time.isoformat() if p.create_time else '',
'update_time': p.update_time.isoformat() if p.update_time else '',
'paixu': p.paixu,
@@ -5659,6 +5659,11 @@ class ProductModifyView(APIView):
# ---------- 应用修改 ----------
# 允许修改的字段白名单(防止注入)
# 前端参数名 → 模型字段名映射
field_name_map = {
'kaioi_ewai_PlayerCommission': 'kaioi_ewai_dashou_fencheng',
'ewai_PlayerCommission': 'ewai_dashou_fencheng',
}
allowed_fields = [
'biaoqian', 'jiage', 'kucun', 'leixing_id', 'duiwai_xiaoliang',
'jieshao', 'xiadan_xuzhi', 'yaoqiuleixing', 'yongjin',
@@ -5666,18 +5671,22 @@ class ProductModifyView(APIView):
'shangjia_zhuangtai', 'fengjin_zhuangtai', 'shenhe_zhuangtai'
]
update_fields = []
for field in allowed_fields:
value = request.data.get(field)
if value is not None:
model_field = field_name_map.get(field, field)
# 简单类型校验(根据字段类型)
if field in ['jiage', 'kucun', 'duiwai_xiaoliang', 'yongjin', 'ewai_PlayerCommission', 'paixu']:
try:
value = float(value) if 'jiage' in field or 'yongjin' in field or 'ewai' in field else int(value)
except (ValueError, TypeError):
return Response({'code': 400, 'msg': f'字段 {field} 值格式错误'})
setattr(product, field, value)
setattr(product, model_field, value)
update_fields.append(model_field)
product.save(update_fields=allowed_fields)
if update_fields:
product.save(update_fields=update_fields)
return Response({'code': 0, 'msg': '商品修改成功'})