2016-04-03 25 views
3

我正在使用tastypie_mongoengine作为Django中的REST Api。'模块'对象没有属性'SortedDict'Django Tastypie错误

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' 

请问该如何解决这个问题?

+0

您使用的是哪个版本的Django? – JRodDynamite

+0

Django == 1.9.4 django-tastypie == 0.13.3 django-tastypie-mongoengine == 0.4.6 mongoengine == 0.8.1 – user3787291

回答

2

那么,从Django 1.9开始,SortedDict已被删除。检查这个link作为参考。

SortedDict从Django 1.7开始已弃用,并将在Django 1.9中删除。改为使用collections.OrderedDict。可在Python 2.7和3.1+

您可以通过制定和修改的库代码在提交here此拉动请求给予一些其他的变化中的链接提到与​collections.OrderedDict取代SortedDict。但公平的警告,这可能无法正常工作,因为合并请求迄今尚未被接受且未能通过构建测试。

另一个选择是将Django降级到版本1.8或1.7,直到django-tastypie-mongoengine可以发布一个稳定的版本,该版本可以用于Django 1.9。

相关问题