Поле модели Django Blob
Как вы храните "blob" двоичных данных с помощью Django ORM с бэкэнд PostgreSQL? Да, я знаю, что Django хмурится этим делом, и да, я знаю, что они предпочитают использовать для этого ImageField или FileField, но достаточно сказать, что это непрактично для моего приложения.
Я попытался взломать его с помощью TextField, но я получаю случайные ошибки, когда мои двоичные данные не подтверждают строго тип кодировки моделей, который по умолчанию является unicode. например
psycopg2.DataError: invalid byte sequence for encoding "UTF8": 0xe22665
Ответы
Ответ 1
Этот фрагмент полезен:
http://djangosnippets.org/snippets/1597/
Это, возможно, самое простое решение для хранения двоичных данных в TextField.
import base64
from django.db import models
class Foo(models.Model):
_data = models.TextField(
db_column='data',
blank=True)
def set_data(self, data):
self._data = base64.encodestring(data)
def get_data(self):
return base64.decodestring(self._data)
data = property(get_data, set_data)
Там есть несколько других фрагментов, которые могут помочь.
Ответ 2
Если вы используете Django >= 1.6, там BinaryField
Ответ 3
Я использую это простое поле для бэкэнд mysql, вы можете изменить его для других бэкэндов
class BlobField(models.Field):
description = "Blob"
def db_type(self, connection):
return 'blob'
Ответ 4
Кроме того, проверьте Хранилище базы данных Django Storage:.
Я еще не использовал его, но он выглядит потрясающе, и я начну использовать его, как только отправлю свой ответ.