Serializer missing context if pagination is used. · Issue #2355 · encode/django-rest-framework (original) (raw)
affects all versions of drf3; worked in drf2
suppose we have an app called 'text' with a models.py (i've just put everything there for simplicity):
from django.db import models from rest_framework import viewsets, serializers from rest_framework.test import APITestCase
class Text(models.Model): text = models.TextField()
class TextSerializer(serializers.ModelSerializer):
def init(self, *args, **kwargs): super(TextSerializer, self).init(*args, **kwargs) print 'Context in serializer', self.context
class TextViewSet(viewsets.ModelViewSet): queryset = Text.objects.all() serializer_class = TextSerializer
class TextViewSetWithPagination(TextModelViewSet): paginate_by = 10
opening a shell:
In [1]: from rest_framework.test import APIRequestFactory In [2]: from text.models import * In [3]: TextViewSet.as_view({'get':'list'})(APIRequestFactory().get('/')) Context in serializer {u'view': <text.views.TextViewSet object at 0x5fba390>, u'request': <rest_framework.request.Request object at 0x5fba650>, u'format': None} Out[3]: <rest_framework.response.Response at 0x5fdb2d0> In [4]: TextViewSetWithPagination.as_view({'get':'list'})(APIRequestFactory().get('/')) Context in serializer {} Out[4]: <rest_framework.response.Response at 0x7fe8dd0>