mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-22 17:47:04 +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)
|
||||
results_field = self.results_field
|
||||
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):
|
||||
"""
|
||||
|
|
|
@ -4,7 +4,7 @@ from django.core.paginator import Paginator
|
|||
from django.test import TestCase
|
||||
from django.test.client import RequestFactory
|
||||
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.tests.models import BasicModel, FilterableItem
|
||||
|
||||
|
@ -236,3 +236,32 @@ class TestCustomPaginateByParam(TestCase):
|
|||
response = self.view(request).render()
|
||||
self.assertEquals(response.data['count'], 13)
|
||||
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