我有一个requeriment使用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
Run Code Online (Sandbox Code Playgroud)
我已经实现了一个自定义存储系统来使用自定义模型(包含上面的BlobField)来处理图像的存储/检索.'get_db_prep_value'方法中的'value'参数是包含图像二进制数据的'StringIO'对象.问题是我不知道在'get_db_prep_value'方法中返回什么,因为'StringIO'对象肯定会包含不可打印的字符.
我对这个问题有一些疑问: