This commit is contained in:
王思川 2024-06-14 00:44:17 +08:00
parent 7ebcc10057
commit 3993dcc643
1 changed files with 6 additions and 1 deletions

View File

@ -150,14 +150,19 @@ def common_excel_parse(request):
# 组成 fields_map # 组成 fields_map
fields_map = dict(zip(model_fields, model_verbose_name)) fields_map = dict(zip(model_fields, model_verbose_name))
fields_map_nf = dict(zip(model_verbose_name, model_fields))
# 检查表头是否与模型字段名对应 # 检查表头是否与模型字段名对应
if not set(header_row).issubset(model_verbose_name): if not set(header_row).issubset(model_verbose_name):
return JsonResponse({'error': '表头不匹配请使用正确的Excel上传模板。'}, status=400) return JsonResponse({'error': '表头不匹配请使用正确的Excel上传模板。'}, status=400)
# 创建一个映射将Excel表头映射到模型字段名
header_to_field_map = {header: fields_map_nf[header] for header in header_row}
for row in sheet.iter_rows(min_row=2, values_only=True): for row in sheet.iter_rows(min_row=2, values_only=True):
if not all(value is None for value in row): if not all(value is None for value in row):
instance_data = dict(zip(model_fields, row)) # 使用映射来确保每个Excel单元格的数据对应到正确的模型字段
instance_data = {header_to_field_map[header]: value for header, value in zip(header_row, row)}
instance = model(**instance_data) instance = model(**instance_data)
try: try:
instance.full_clean() instance.full_clean()