2016-04-03 77 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。

相關問題