python - Django Blob Model Field
django-models django-orm (4)
Además, revisa el almacenamiento de la base de datos de Django Storages:.
No lo he usado todavía, pero se ve increíble y voy a comenzar a utilizarlo tan pronto como publique mi respuesta.
¿Cómo se almacena un "blob" de datos binarios usando el ORM de Django, con un backend de PostgreSQL? Sí, sé que Django frunce el ceño ante ese tipo de cosas, y sí, sé que prefieren que utilices ImageField o FileField para eso, pero basta decir que eso no es práctico para mi aplicación.
Intenté hackearlo usando un TextField, pero tengo errores ocasionales cuando mis datos binarios no confirman estrictamente el tipo de codificación de los modelos, que es unicode por defecto. p.ej
psycopg2.DataError: invalid byte sequence for encoding "UTF8": 0xe22665
Este fragmento es bueno:
http://djangosnippets.org/snippets/1597/
Esta es posiblemente la solución más simple para almacenar datos binarios en un 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)
Hay un par de otros fragmentos que podrían ayudar.
He estado usando este campo simple para backend ''mysql'', puedes modificarlo para otros backends
class BlobField(models.Field):
description = "Blob"
def db_type(self, connection):
return ''blob''
Si usa Django> = 1.6, hay un BinaryField