我需要更改django中的默认文件上传行为,而django网站上的文档相当混乱。
我有一个带有字段的模型如下:
class document (models.Model):
name = models.CharField(max_length=200)
file = models.FileField(null=True, upload_to='uploads/')
我需要在上传文件时创建一个包含元数据的.json文件。例如,如果我上传文件mydocument.docx,我需要在uploads /文件夹中创建mydocument.json文件,并添加有关文档的元信息。
从我可以从文档中解读我需要创建一个文件上传处理程序作为django.core.files.uploadhandler.FileUploadHandler的子类。它还继续说我可以在任何我想要的地方定义它。
我的问题:定义子类的最佳位置在哪里?同样来自这里的文档https://docs.djangoproject.com/en/1.8/ref/files/uploads/#writing-custom-upload-handlers看起来像子类如下:
class FileUploadHandler(object):
def handle_raw_input(self, input_data, META, content_length, boundary, encoding=None):
# do the acctual writing to disk
def file_complete(self, file_size):
# some logic to create json file
有没有人有一个适用于django 1.8版的上传处理程序类的工作示例?
答案 0 :(得分:1)
一个选项可能是在用于最初上传文件的(模型)表单上生成.json
文件。覆盖save()
的{{1}}方法,以便在保存模型后立即生成文件。
ModelForm
如果您使用自定义存储来处理S3这样的事情,我在本地测试了这个,但YMMV。