Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,10 @@ pip install django-admin-inline-paginator

```
@register(YourModel)
class YourModelAdmin(ModelAdmin):
class YourModelAdmin(InlineModelPaginated, ModelAdmin):
fields = (...)
inlines = (ModelWithFKAdminInline, )
inline_pagination_keys = (ModelWithFKAdminInline.paginated_key, )
model = YourModel
```

Expand All @@ -64,9 +65,10 @@ pip install django-admin-inline-paginator

```
@register(YourModel)
class YourModelAdmin(ModelAdmin):
class YourModelAdmin(InlineModelPaginated, ModelAdmin):
fields = (...)
inlines = (ModelWithFKAdminInline, AnotherModelWithFKInline)
inline_pagination_keys = (ModelWithFKAdminInline.pagination_key, AnotherModelWithFKInline.pagination_key)
model = YourModel
```

Expand Down
15 changes: 15 additions & 0 deletions django_admin_inline_paginator/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from django.core.paginator import Paginator
from django.http import HttpRequest
from django.db.models import QuerySet
from django.utils.http import urlencode


class InlineChangeList:
Expand Down Expand Up @@ -77,3 +78,17 @@ class PaginationFormSet(PaginationFormSetBase, formset_class):
PaginationFormSet.request = request
PaginationFormSet.per_page = self.per_page
return PaginationFormSet


class InlineModelPaginated:
inline_pagination_keys = ('page', )

def get_preserved_filters(self, request):
return '&'.join(filter(None, [
super().get_preserved_filters(request),
urlencode({
key: request.GET.get(key)
for key in request.GET.keys()
if key in self.inline_pagination_keys
})
]))
5 changes: 3 additions & 2 deletions example/app/example/admin.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from django.contrib.admin import ModelAdmin, register
from django_admin_inline_paginator.admin import TabularInlinePaginated
from django_admin_inline_paginator.admin import TabularInlinePaginated, InlineModelPaginated

from .models import Country, Region, State

Expand All @@ -18,7 +18,8 @@ class RegionAdminInline(TabularInlinePaginated):


@register(Country)
class CountryAdmin(ModelAdmin):
class CountryAdmin(InlineModelPaginated, ModelAdmin):
fields = ('name', 'active')
inlines = (StateAdminInline, RegionAdminInline)
inline_pagination_keys = (StateAdminInline.pagination_key, RegionAdminInline.pagination_key)
model = Country