将excel文件保存到Django FielField时出现编码错误

2024-10-03 11:26:33 发布

您现在位置:Python中文网/ 问答频道 /正文

祝大家今天愉快。在

在构建django应用程序时,我遇到了一个问题,希望能得到帮助。在

我用一个空的pandas数据框手动生成一个excel文件,其中头是另一个模型字段的内容,这个文件将作为用户导入数据的模板。在

文件已成功生成,但当我尝试将其保存到模型中时(这样以后就不必再创建相同的文件),它会显示以下错误:

'charmap' codec can't decode byte 0x8d in position 54: character maps to < undefined>

我现在使用的是Django 2.0.3,windows10,我的系统语言是西班牙语(拉丁美洲)

这是视图

视图从窗体接收值'periodo'(句点)和'program'('program')

def generar_archivo_importacion(request):
if request.method == 'GET':
    periodo_plantilla = Periodo.objects.get(id=request.GET['periodo'])
    programa_plantilla = Programa.objects.get(id=request.GET['programa'])

    # HERE I TRY TO GET THE DATA FOR THE DATAFRAME HEADERS
    try:
        modulos_generales = ModulosGeneralesPeriodo.objects.get(periodo__id=periodo_plantilla.id). \
            modulos_generales.all()
    except ModulosGeneralesPeriodo.DoesNotExist:
        return HttpResponse('Error: No hay Módulos generales inscritos en este periodo, corrija este error')


    datos = {
        'Numero Documento': [],
        'Tipo Documento': [],
        'Nombre': [],
        'Apellido': [],
    }
    for modulo in modulos_generales:
        datos[modulo.nombre_modulo_normalizado] = []

    # DATAFRAME CREATION
    df = pd.DataFrame(datos)

    # FILE CREATION, nombre_archivo = name_file in spanish

    nombre_archivo = 'Plantilla puntajes 1.xlsx'
    writer = pd.ExcelWriter('media/temp/' + nombre_archivo, engine='xlsxwriter')
    df.to_excel(writer, sheet_name='Puntaje')
    writer.save()

    # At this point the file is saved in 'media/temp/'

    f = open('media/temp/' + nombre_archivo, mode='r')

    # Here I create a new model object
    nueva_plantilla = PlantillasPuntaje(programa=programa_plantilla, periodo=periodo_plantilla)

    # This is where I suposse the problem is, when I try to save the file I just created
    nueva_plantilla.archivo.save(nombre_archivo, File(open('media/temp/'+ nombre_archivo)))

# Im returning a string at the moment
return HttpResponse('it works')

这是模型

^{pr2}$

编辑:回溯完全错误**

^{3}$

谢谢你的关注


Tags: 文件thein模型idgetrequestmedia