У объекта 'module' нет атрибута 'SortedDict' Ошибка Django Tastypie
Я использую tastypie_mongoengine
для отдыха Api в Джанго.
models.py
import mongoengine
import datetime
class Students(mongoengine.Document):
name = mongoengine.StringField(required=True)
age = mongoengine.StringField(required=True)
student_class = mongoengine.StringField(required=True)`
api.py
from tastypie import authorization
from tastypie_mongoengine import resources
from models import Students
class StudentsResource(resources.MongoEngineResource):
class Meta:
queryset = Students.objects.all()
allowed_methods = ('get', 'post', 'put','delete', 'patch')
authorization = authorization.Authorization()
Я получаю следующую ошибку:
File "/home/my_name/projects/StudentBehaviour/mysite/mysite/urls.py", line 3, in <module>
from app.api import StudentsResource
File "/home/my_name/projects/StudentBehaviour/mysite/app/api.py", line 3, in <module>
from tastypie_mongoengine import resources
File "/home/my_name/projects/StudentBehaviour/env/local/lib/python2.7/site-packages/tastypie_mongoengine/resources.py", line 54, in <module>
class ListQuerySet(datastructures.SortedDict):
AttributeError: 'module' object has no attribute 'SortedDict'
Как мне решить эту проблему?
1 ответ
Ну, с Джанго 1,9 года, SortedDict
был удален. Проверьте эту ссылку для справки.
SortedDict
устарела с Django 1.7 и будет удалена в Django 1.9. Использоватьcollections.OrderedDict
вместо. Доступно в Python 2.7 и 3.1+
Вы можете заменить SortedDict
с collections.OrderedDict
как упомянуто в ссылке путем внесения изменений в код библиотеки и некоторых других изменений, как указано в данном запросе на извлечение, представленном здесь. Но справедливое предупреждение, это может не сработать, так как запрос на извлечение не был принят до сих пор и не прошел тест сборки.
Другой вариант - понизить версию Django до версии 1.8 или 1.7, пока django-tastypie-mongoengine не сможет выпустить стабильную версию, которая будет работать для Django 1.9.