我需要从一个excel文件和一个包含图像的文件夹中导入一些数据,excel中的每一行都描述了每个条目,并且在文件夹中有一个文件名列表(与条目相关的照片)。
我已经完成了一个脚本,它创建了数据库中的每个条目,并通过django shell保存它,但是我不知道如何实例化InMemoryUploadedFile来与模型一起保存它。
在django 1.0中,我有一个小类,它允许我做我需要的事情,但是随着django1.1中的更改,它不再工作了。
class ImportFile(file):
def __init__(self, *args, **kwargs):
super(ImportFile, self).__init__(*args, **kwargs)
self._file = self
self.size = os.path.getsize(self.name)
def __len__(self):
return self.size
def chunks(self, chunk_size=None):
self._file.seek(0)
yield self.read()
我使用这个类和这段代码来加载图像并将它们与模型实例一起保存。
for photo in photos:
f = ImportFile(os.path.join(IMPORT_DIR, 'fotos', photo), 'r')
p = Photo(name=f.name, image=f, parent=supply.supply_ptr)
name = str(uuid1()) + os.path.splitext(f.name)[1]
p.image.save(name, f)
p.save()
问题是,如何从python中的文件创建InMemoryUploadedFile或TemporaryUploadedFile?,或者任何其他可以在这种情况下工作的东西。
我终于找到了答案。
如果使用Python 3,则需要进行一次调整-将“r”更改为“rb”:
相关问题 更多 >
编程相关推荐