2015-09-21 4 views
5

Я только начинаю работать с django и DRF, и возникает проблема, которая похожа на ответы кэша DRF. Я имею в виду - я могу изменить объект, создать новый или удалить его - и DRF сохранить ответ, вот и ничего не изменилось. Например, я создаю объект, но modelViewSet по-прежнему возвращает данные, где этот объект не представлен. Но если я прямо запрошу его объект, он покажет, что он создан. И так с любыми другими действиями. Я не могу найти тему о кешировании в DRF и выгляжу так, как будто у меня нет django chaching middlewares, поэтому я понятия не имею, что происходит. Только одна вещь, которая помогает - перезапустить сервер (я использую dev-сервер по умолчанию).Как отключить кеширование Django REST Framework?

Еще одна вещь - все данные в порядке, когда они отображаются с помощью представлений django, а не изображений DRF.

Вот один из сериализаторов/modelViewSets, которые я использую. Это просто, насколько это возможно. А также - я не использую django cache backends. По крайней мере, у меня нет никаких настроек.

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

Нет такой вещи, встроенной в DRF, вы уверены, что кеширование появляется на стороне DRF? Может быть, есть что-то еще в django, которые выполняют этот кеш, или это в вашем браузере? – GwynBleidD

+0

Ну, похоже, что это не браузер - другие люди также видят одинаковые результаты. И, как я уже сказал, у меня нет кэширующего промежуточного ПО. Django использует промежуточное ПО для кэширования, не так ли? – GeraldIstar

+0

Можете ли вы опубликовать просмотр и сериализатор, на которые влияет этот кеш, а также на то, какие кеш-серверы вы используете в проекте django? – GwynBleidD

ответ

4

Вы можете прочитать here о Джанго QuerySet кэширование. Лучшим советом, как представляется, является повторный запуск метода .all(), чтобы получить свежие результаты. Просто object.property может дать вам кешированные результаты.

+0

Ах, стыдно за меня. Спасибо, мне просто нужно использовать 'WorkOperation.objects.all()' insted of return 'self.queryset'. Мое невнимание. – GeraldIstar

Смежные вопросы