2016-04-03 25 views
3

DjangoのREST APIにtastypie_mongoengineを使用しています。'module'オブジェクトに '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)` 

私は、次のエラーを取得しています

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() 

api.py:

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を使用してください。 hereを提出し、このプル要求に与えられたとして、ライブラリコードへの変更や他のいくつかの変更を加えることによってリンクに述べたようにあなたが​collections.OrderedDictSortedDictを置き換えることができますPythonの2.7でと3.1+

利用可能。しかし、フェアの警告は、プルリクエストがこれまで受け付けられておらず、ビルドテストに失敗したため動作しない可能性があります。

また、Djangoをバージョン1.8または1.7にダウングレードすると、django-tastypie-mongoengineがDjango 1.9で動作する安定版をリリースできるようになります。

関連する問題