2015-09-21 20 views
5

Ich fange gerade an, mit django und DRF zu arbeiten, und komme ein Problem vor, das aussieht wie DRF-Cache-Antworten. Ich meine - ich kann Objekte ändern, neue erstellen oder löschen - und DRF behält die Antwort, das heißt, nichts wird geändert. Ich erstelle beispielsweise ein Objekt, aber ModelViewSet gibt immer noch Daten zurück, bei denen dieses Objekt nicht angezeigt wird. Aber wenn ich direkt Objekt anfordern - es zeigt, dass es erstellt wurde. Und so mit irgendwelchen anderen Handlungen. Ich kann kein Thema zum Caching in DRF finden und sehe aus, als hätte ich keine Django-Chaching-Middleware, also habe ich keine Ahnung, was hier vor sich geht. Nur eine Sache, die hilft - Server neu starten (ich benutze default-dev-server).Wie kann das Zwischenspeichern von Django REST Framework deaktiviert werden?

Eine weitere Sache - alle Daten sind in Ordnung, wenn es von Django-Ansichten gerendert wird, nicht von DRF-Ansichten.

Hier ist einer der Serializer/ModelViewSets, die ich verwende. Es ist so einfach wie möglich. Und auch - ich benutze keine Django-Cache-Backends. Zumindest - ich habe keine in meinen Einstellungen.

class WorkOperationSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = WorkOperation 


class WorkOperationAPIView(viewsets.ModelViewSet): 
    serializer_class = WorkOperationSerializer 
    queryset = WorkOperation.objects.all() 

    def get_queryset(self): 
     return self.queryset 
+0

Es ist nicht so etwas in DRF eingebaut, sind Sie sicher, dass Caching auf der DRF-Seite erscheint? Vielleicht gibt es noch etwas im Django, das diesen Cache ausführt oder in Ihrem Browser ist? – GwynBleidD

+0

Nun, sieht, das ist kein Browser - andere Leute sehen auch die gleichen Ergebnisse. Und wie gesagt - ich habe keine Middleware im Cache. Django benutzt Middleware zum Caching, oder? – GeraldIstar

+0

Können Sie die Ansicht und den Serializer, die von diesem Cache betroffen sind, auch veröffentlichen? Welche Cache-Backends verwenden Sie im django-Projekt? – GwynBleidD

Antwort

4

Sie können here über django QuerySet Caching lesen. Der beste Rat scheint zu sein: Führen Sie die Methode .all() erneut aus, um neue Ergebnisse zu erhalten. Nur object.property kann Ihnen zwischengespeicherte Ergebnisse liefern.

+0

Ah, Schande über mich. Danke, ich muss nur 'WorkOperation.objects.all()' anstelle von 'self.queryset' verwenden. Meine Unaufmerksamkeit. – GeraldIstar

Verwandte Themen