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對象?