2016-07-03 51 views
0

我在BLOB文件中读取用户图像,但我想将它保存为django模型中的图像格式。 如何将此文件转换为图像文件(.jpeg)并将其保存在django models.ImageField中? 我使用python 2.7和django 1.9。 我的模式是:在python中将blob转换为Django ImageField?

class Staff(models.Model): 
    user = models.ForeignKey(User) 
    cn = models.CharField(max_length=100) 

    new_comer = models.NullBooleanField() 
    change_position = models.NullBooleanField() 
    change_manager = models.NullBooleanField() 
    acting = models.NullBooleanField() 
    expelled = models.NullBooleanField() 
    active = models.NullBooleanField() 
    avatar = models.ImageField(upload_to='/images/') 

请帮我...

回答

0

你需要尝试这样的事情。

import io 
from django.core.files.base import File 

# Set values of your model filed. 
staff_instance = Staff() 
staff_instance.user = user_instance 
... 
... 

with io.BytesIO(blob_file) as stream: 
    django_file = File(stream) 
    staff_instance.avatar.save(some_file_name, django_file) 

staff_instance.save() 

我假定blob是文件的字节数组。 为了使它成为一个文件,我需要将其转换为流。 因此,我认为BytesIO将是一个不错的选择。

您可以直接将文件保存到磁盘,但如果您想让django将其上传到upload_to目录,则需要使用django.core.files.base.File类。 当您运行django.core.files.base()方法文件将被保存到所需的目录。

我想你会使用这个数据迁移过程,而不是在视图中。 如果是这种情况,则可以将此代码置于django command。 然后你可以使用任何Django和项目相关的资源。

让我知道它是否有帮助。