相关疑难解决方法(0)

如何正确格式化要插入数据库的StringIO对象(python和django)?

我有一个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'对象肯定会包含不可打印的字符.

我对这个问题有一些疑问:

  • 我应该在'get_db_prep_value'方法中返回什么?
  • 如果期望值是ASCII字符串,我可以用数据库独立的方式表示blob(十六进制转义)吗?
  • 如果没有,是否内置库可以为我处理这种转换?
  • 我可以期望收到'to_python'方法的输入,以及如何将其转换为StringIO对象?

python django django-models

4
推荐指数
1
解决办法
2271
查看次数

标签 统计

django ×1

django-models ×1

python ×1