python django django-models django-orm django-blob

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''