diff --git a/djadmin2/models.py b/djadmin2/models.py index 6765df9..a0b40a5 100644 --- a/djadmin2/models.py +++ b/djadmin2/models.py @@ -167,7 +167,11 @@ class ModelAdmin2(BaseAdmin2): return reverse('admin2:{}'.format(self.get_prefixed_view_name('index'))) def get_api_list_kwargs(self): - return self.get_default_view_kwargs() + kwargs = self.get_default_view_kwargs() + kwargs.update({ + 'paginate_by': self.list_per_page, + }) + return kwargs def get_api_detail_kwargs(self): return self.get_default_view_kwargs() diff --git a/example/blog/tests/test_apiviews.py b/example/blog/tests/test_apiviews.py index 621b88a..8893ba5 100644 --- a/example/blog/tests/test_apiviews.py +++ b/example/blog/tests/test_apiviews.py @@ -1,6 +1,7 @@ from django.test import TestCase from django.test.client import RequestFactory from django.core.urlresolvers import reverse +from django.utils import simplejson as json from djadmin2 import apiviews @@ -47,6 +48,22 @@ class ListCreateAPIViewTest(ViewTest): self.assertIn('"__str__": "Foo"', response.content) + def test_pagination(self): + request = self.factory.get(reverse('admin2:blog_post_api-list')) + modeladmin = self.get_model_admin(Post) + view = apiviews.ListCreateAPIView.as_view( + **modeladmin.get_api_list_kwargs()) + response = view(request) + response.render() + data = json.loads(response.content) + self.assertEqual(data['count'], 0) + # next and previous fields exist, but are null because we have no + # content + self.assertTrue('next' in data) + self.assertEqual(data['next'], None) + self.assertTrue('previous' in data) + self.assertEqual(data['previous'], None) + class RetrieveUpdateDestroyAPIViewTest(ViewTest):