2015-09-21 6 views
5

Sto solo iniziando a lavorare con django e DRF, e ho un problema, sembra una risposta alla cache DRF. Voglio dire - Posso cambiare oggetto, creare nuovo, o cancellarlo - e DRF mantenere la risposta, questo non è cambiato nulla. Ad esempio, creo un oggetto, ma modelViewSet restituisce ancora i dati in cui questo oggetto non viene presentato. Ma se lo chiedo direttamente, l'oggetto mostra che è stato creato. E così con qualsiasi altra azione. Non riesco a trovare un argomento sulla memorizzazione nella cache in DRF, e sembra che non abbia qualche middleware per il django chaching, quindi non ho idea di cosa stia succedendo. Solo una cosa che aiuta - riavvia il server (sto usando il dev-server predefinito).Come disabilitare il caching di Django REST Framework?

Un'ultima cosa: tutti i dati sono ok quando sono resi da viste di Django, non da viste DRF.

Ecco uno dei serializzatori/modelViewSet che sto utilizzando. È il più semplice possibile. E anche - Non sto usando i backend della cache di django. Almeno - Non ne ho nessuna nelle mie impostazioni.

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

Non c'è una cosa simile in DRF, sei sicuro che la cache sia visibile sul lato DRF? Forse c'è qualcos'altro in django che esegue questa cache o è nel tuo browser? – GwynBleidD

+0

Bene, sembra che non sia un browser: anche gli altri vedono gli stessi risultati. E come ho detto, non ho alcun middleware di cache. Django usa il middleware per il caching, giusto? – GeraldIstar

+0

Puoi pubblicare la vista e il serializzatore interessati da quella cache, anche quali backend cache stai usando nel progetto django? – GwynBleidD

risposta

4

Si può leggere here su Django set di query nella cache. Il miglior consiglio sembra essere: rieseguire il metodo .all() per ottenere nuovi risultati. Solo object.property potresti dare risultati memorizzati nella cache.

+0

Ah, vergognati. Grazie, ho solo bisogno di usare 'WorkOperation.objects.all()' insted di return 'self.queryset'. La mia disattenzione. – GeraldIstar