У объекта '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.

Другие вопросы по тегам