Je suis en train d'utiliser django, et mongoengine de fournir le backend de stockage uniquement avec GridFS. J'ai encore une base de données MySQL.
Je suis en cours d'exécution dans un étrange (pour moi) d'erreur quand je suis à la suppression de l'django admin et je me demande si je fais quelque chose de mal.
mon code ressemble à ceci:
# 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)
Je suis capable de télécharger des fichiers, mais lorsque je les supprimer, quelque chose semble se briser et la base de données mongo semble entrer dans un état impraticable jusqu'à ce que j'ai supprimer manuellement tous les FileDocument.objets. Quand cela arrive, je ne peux pas télécharger des fichiers ou de les supprimer de l'django interface.
À partir de la trace de la pile que j'ai:
/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
Suis-je utiliser cette fonction de manière incorrecte?
Mise à JOUR:
grâce à @zeekay la réponse que j'ai été en mesure d'obtenir un travail gridfs de stockage plugin fonctionne. J'ai fini pas à l'aide de mongoengine à tous. J'ai mis ma solution adaptée sur github. Il est clair qu'un exemple de projet en montrant comment l'utiliser. J'ai aussi téléchargé le projet de pypi.
Une Autre Mise À Jour:
Je recommande fortement le django-les stockages de projet. Il a beaucoup de rangement adossés à des options et est utilisé par beaucoup plus de personnes que mon original de la solution proposée.