我需要从一个excel文件,并用图像的文件夹导入一些数据,在Excel中的每一行描述的每个条目,并有文件夹(与进入照片)。

在文件名列表

我做这在数据库中创建的每个条目,并将其保存槽运行Django shell脚本,但我不知道如何来实例化一个InMemoryUploadedFile与模型保存它。

在Django 1.0我有这让我做什么,我需要这个小班,但在Django 1.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可能在这方面的工作。

有帮助吗?

解决方案

最后,我找到了答案。

from django.core.files import File

f = File(open(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 3 一个调节 - 变化为 'r' 至 'RB':

f = File(open(os.path.join(IMPORT_DIR, 'fotos', photo), 'rb'))
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top