首页 > 解决方案 > 有没有办法使用 django pre_save 信号将上传的 excel 文件转换为 CSV?

问题描述

我想知道是否可以使用 django pre_save 信号将用户选择的 excel 文件转换为 CSV。假设用户上传了“test.xlsx”,我想使用 pre_save 信号自动转换该文件。用户上传文件后,它实际上应该是我的 FileField 中的“test.csv”。

标签: pythondjangopython-3.xdjango-rest-framework

解决方案


是的,您可以在 中pre_save执行此操作,但最好仅在处理上传的 Django 表单或 DRF 序列化程序中执行此操作。这样,您可以将转换错误作为验证错误等冒泡给用户。

假设模型中的字段是upload,您将使用

  • clean_upload(self, file)在 Django 表单中。
  • validate_upload(self, file)在 DRF 序列化器中。

只需从其中一个中返回一个ContentFile()包含您转换后的内容的新内容。


推荐阅读