2016-04-03 5 views
3

Ich verwende tastypie_mongoengine für die REST Api in Django.'Modul' Objekt hat kein Attribut 'SortedDict' Django Tastypie Fehler

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

ich die folgende Störung erhalte:

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' 

Wie löse ich dieses Problem?

+0

Welche Version von Django verwenden Sie? – JRodDynamite

+0

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

Antwort

2

Nun, ab Django 1.9 wurde SortedDict entfernt. Überprüfen Sie diese link als Referenz.

SortedDict ist ab Django 1.7 veraltet und wird in Django 1.9 entfernt. Verwenden Sie stattdessen collections.OrderedDict. Erhältlich in Python 2.7 und 3.1+

Sie können SortedDict mit ​collections.OrderedDict ersetzen, wie durch Änderungen an der Bibliothek Code und einige andere Änderungen in den Link erwähnt, wie in diesem Pull-Request here vorgelegt gegeben. Aber fair Warnung, dies funktioniert möglicherweise nicht, da die Pull-Anfrage wurde bisher nicht akzeptiert und hat den Build-Test fehlgeschlagen.

Eine andere Möglichkeit ist, Django entweder auf Version 1.8 oder 1.7 zu downgraden, bis django-tastypie-mongoengine eine stabile Version veröffentlichen kann, die für Django 1.9 funktioniert.

Verwandte Themen