mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-29 21:14:01 +03:00
context to custom field in pagination
This commit is contained in:
parent
497da7fc69
commit
5f08ec70e2
|
@ -62,7 +62,7 @@ class BasePaginationSerializer(serializers.Serializer):
|
||||||
super(BasePaginationSerializer, self).__init__(*args, **kwargs)
|
super(BasePaginationSerializer, self).__init__(*args, **kwargs)
|
||||||
results_field = self.results_field
|
results_field = self.results_field
|
||||||
object_serializer = self.opts.object_serializer_class
|
object_serializer = self.opts.object_serializer_class
|
||||||
self.fields[results_field] = object_serializer(source='object_list')
|
self.fields[results_field] = object_serializer(source='object_list', **kwargs)
|
||||||
|
|
||||||
def to_native(self, obj):
|
def to_native(self, obj):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -4,7 +4,7 @@ from django.core.paginator import Paginator
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
from django.test.client import RequestFactory
|
from django.test.client import RequestFactory
|
||||||
from django.utils import unittest
|
from django.utils import unittest
|
||||||
from rest_framework import generics, status, pagination, filters
|
from rest_framework import generics, status, pagination, filters, serializers
|
||||||
from rest_framework.compat import django_filters
|
from rest_framework.compat import django_filters
|
||||||
from rest_framework.tests.models import BasicModel, FilterableItem
|
from rest_framework.tests.models import BasicModel, FilterableItem
|
||||||
|
|
||||||
|
@ -236,3 +236,32 @@ class TestCustomPaginateByParam(TestCase):
|
||||||
response = self.view(request).render()
|
response = self.view(request).render()
|
||||||
self.assertEquals(response.data['count'], 13)
|
self.assertEquals(response.data['count'], 13)
|
||||||
self.assertEquals(response.data['results'], self.data[:5])
|
self.assertEquals(response.data['results'], self.data[:5])
|
||||||
|
|
||||||
|
|
||||||
|
class CustomField(serializers.Field):
|
||||||
|
def to_native(self, value):
|
||||||
|
if not 'view' in self.context:
|
||||||
|
raise RuntimeError("context isn't getting passed into custom field")
|
||||||
|
return "value"
|
||||||
|
|
||||||
|
|
||||||
|
class BasicModelSerializer(serializers.Serializer):
|
||||||
|
text = CustomField()
|
||||||
|
|
||||||
|
|
||||||
|
class TestContextPassedToCustomField(TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
BasicModel.objects.create(text='ala ma kota')
|
||||||
|
|
||||||
|
def test_with_pagination(self):
|
||||||
|
class ListView(generics.ListCreateAPIView):
|
||||||
|
model = BasicModel
|
||||||
|
serializer_class = BasicModelSerializer
|
||||||
|
paginate_by = 1
|
||||||
|
|
||||||
|
self.view = ListView.as_view()
|
||||||
|
request = factory.get('/')
|
||||||
|
response = self.view(request).render()
|
||||||
|
|
||||||
|
self.assertEquals(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user