4
我有一个requeriment存储使用Django在数据库中的图像,为此,我创建了一个自定义字段:如何正确格式化要插入数据库的StringIO对象(python和django)?
from django.db import models
class BlobField(models.Field):
__metaclass__ = models.SubfieldBase
def db_type(self, connection):
#TODO handle other db engines
backend = connection.settings_dict['ENGINE']
if backend == 'django.db.backends.postgresql':
return 'bytea'
elif backend == 'django.db.backends.sqlite3':
return 'blob'
else:
raise Exception('unsuported db')
def to_python(self, value):
#TODO
return value
def get_db_prep_value(self, value, connection, prepared=False):
#TODO
return value
我已经实现了使用自定义模式自定义storage system处理图像的存储/检索(包含上面的BlobField)。 'get_db_prep_value'方法中的'value'参数是一个包含图像二进制数据的'StringIO'对象。问题在于我不知道'get_db_prep_value'方法返回什么,因为'StringIO'对象肯定包含不可打印的字符。
我对这个问题的一些问题:
- 我应该回在“get_db_prep_value”的方法?
- 如果期望值是一个ASCII字符串,我可以用独立于数据库的方式表示blob(十六进制转义符)吗?
- 如果没有,是否有内置的库为我处理这种转换?
- 我可以期待作为'to_python'方法的输入,以及如何将其转换为StringIO对象?