Estoy tratando de usar django, y mongoengine para proporcionar el backend de almacenamiento solo con GridFS. Todavía tengo una base de datos MySQL.Django con problemas de almacenamiento MongoDB enchufables
Tengo un error extraño (para mí) cuando elimino el administrador de django y me pregunto si estoy haciendo algo incorrectamente.
mi código es el siguiente:
# settings.py
from mongoengine import connect
connect("mongo_storage")
# models.py
from mongoengine.django.storage import GridFSStorage
class MyFile(models.Model):
name = models.CharField(max_length=50)
content = models.FileField(upload_to="appsfiles", storage=GridFSStorage())
creation_time = models.DateTimeField(auto_now_add=True)
last_update_time = models.DateTimeField(auto_now=True)
soy capaz de subir archivos muy bien, pero cuando se borra ellos, algo que parece romperse y la base de datos mongo parece estar en un estado inviable hasta que manualmente eliminar todos FileDocument.objects. Cuando esto sucede, no puedo cargar archivos o eliminarlos de la interfaz django.
Desde el seguimiento de la pila que tengo:
/home/projects/vector/src/mongoengine/django/storage.py in _get_doc_with_name
doc = [d for d in docs if getattr(d, self.field).name == name] ...
▼ Local vars
Variable Value
_[1]
[]
d
docs
Error in formatting: cannot set options after executing query
name
u'testfile.pdf'
self
/home/projects/vector/src/mongoengine/fields.py in __getattr__
raise AttributeError
estoy usando esta función de forma incorrecta?
ACTUALIZACIÓN:
gracias a la respuesta de @ zeekay yo era capaz de conseguir un plugin de almacenamiento GridFS de trabajo para trabajar. Terminé sin usar mongoengine en absoluto. Puse mi solución adaptada en github. Hay un proyecto de muestra claro que muestra cómo usarlo. También subí el proyecto al pypi.
Otro Actualización:
lo recomiendo mucho el proyecto django-storages. Tiene muchas opciones respaldadas por almacenamiento y muchas más personas lo usan que mi solución original propuesta.
He estado esperando hacer algo como esto para la instalación Mayan [link] (https://github.com/rosarior/mayan) en el trabajo. Pero no tengo idea de cómo solucionar tu problema. –
No es exactamente lo que podría estar buscando, pero agregué un backend GridFsStorage para Mayan [link] (http://goo.gl/7BwkZ). Es muy simple y solo depende de Pymongo, podrías intentar usarlo para tu aplicación. –
genial gracias, voy a echarle un vistazo este fin de semana – Aaron