Я пытаюсь использовать django и mongoengine для обеспечения хранилища только с GridFS.У меня все еще есть база данных MySQL.
При удалении из администратора django я сталкиваюсь со странной (для меня) ошибкой и задаюсь вопросом, правильно ли я что-то делаю.
мой код выглядит следующим образом:
# 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)
Я могу загружать файлы очень хорошо, но когда я их удаляю, что-то кажется сломанным, и база данных mongo, кажется, переходит в нерабочее состояние, пока я не удаляю вручнуюFileDocument.objects.Когда это происходит, я не могу загрузить файлы или удалить их из интерфейса django.
Из трассировки стека у меня есть:
/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
Я неправильно использую эту функцию?
ОБНОВЛЕНИЕ:
благодаря ответу @ zeekay я смог заставить работать работающий плагин для хранения gridfs.В итоге я вообще не использовал mongoengine.Я поместил свое адаптированное решение на github .Существует четкий пример проекта, показывающий, как его использовать.Я также загрузил проект в pypi .
Другое обновление:
Я очень рекомендую django-хранилища проект.Он имеет множество опций хранения и используется гораздо большим количеством людей, чем мое первоначальное предлагаемое решение.