Mongoengine und Django Rest Framework bekommen, um nett zu spielen

8

Ich frage mich, wie ich Mongoengine und DjangoRESTframework miteinander arbeiten lassen kann. Derzeit ist mein Modell

%Vor%

und ich habe den Serializer als

definiert %Vor%

Aber ich erhalte den Fehler

%Vor%

was die folgende Rückverfolgung ergibt

%Vor%     
user1876508 20.06.2013, 18:56
quelle

3 Antworten

11

Django REST Framework soll gut mit Djangos Modellen zusammenarbeiten. Da MongoEngine kein Ersatz für Djangos Modelle ist, müssen Sie ein paar weitere Funktionen definieren, damit es mit dem Django Rest-Framework gut spielt.

Wenn Sie ein Framework für MongoEngine benötigen, können Sie sich die django-tastypie-mongoengine ansehen statt.

Wenn Sie Django REST Framework bevorzugen, ist dies jedoch durchaus möglich. Ihre BlogList -Klasse ist eigentlich eine View, kein Serializer. Definieren Sie zuerst eine Serialisierungsklasse:

%Vor%

Da das MongoEngine-Dokument keine Instanz des Django-Modells ist, müssen Sie die Objekte selbst erstellen, anstatt von serializers.ModelSerializer zu erben. Deshalb ist die Methode restore_object hier. Aus der Dokumentation : Wenn Sie ein Wörterbuch für deserialisierte Feldwerte angeben, aktualisiert [es] ein vorhandenes Modellinstanz oder erstellen Sie eine neue Modellinstanz.

Dann können Sie Ihre Ansicht definieren, z. B.

%Vor%

Auch hier erwartet Django REST Framework einige Dinge von Standard-Django-Modellen, die nicht von MongoEngine Documents verifiziert werden. Daher muss die Methode get_queryset neu definiert werden.

Fügen Sie in Ihrer urls.py Folgendes hinzu:

%Vor%     
Nicolas Cortot 20.06.2013, 20:31
quelle
1

Sieh dir Monkful an, es ist wie Django Rest Framework, aber es funktioniert mit MongoEngine.

    
rednaw 25.05.2014 10:36
quelle
0

Schnell vorwärts bis Mitte 2016. Jetzt haben wir Django-REST-Framework-Mongoengine . Es ist immer noch weit davon entfernt, eine komplette schlüsselfertige Lösung zu sein, aber zumindest die Teilfunktionalität, die es derzeit bietet, ist mit Komponententests gut abgedeckt. Also, komm, lass es uns verbessern.

    
Boris Burkov 21.06.2016 11:02
quelle