2
我有一个Django模型如下:的Django FileField字段编码
class ExportFile(BaseExportFile):
created_timestamp = models.DateTimeField(auto_now=True, editable=False)
data = models.FileField(upload_to='exports')
,并呈现一个模板来创建一个CSV文件中的视图功能:
def create_csv(request):
context = Context({'data': MyModel.objects.all()})
rendered = render_to_string('mytemplate.html', context)
# create tradefile and save
cf = ContentFile(rendered)
tf = ExportFile()
tf.data.save('myfile.csv', cf)
tf.save()
response = HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = 'attachment; filename=%s' % 'myfile.csv'
response.write(rendered)
return response
的观点不仅节省了CSV数据到FileField,但它也会将其返回给浏览器。我遇到的问题是浏览器文件完美地工作,但保存在模型上的文件是两倍的大小,当我使用diff程序时,我可以看到额外的隐藏字符。我认为它必须与mime类型和django自动保存utf8相关,但我无法想象它!