custom.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. from django.core.paginator import AsyncPage, AsyncPaginator, Page, Paginator
  2. class ValidAdjacentNumsPage(Page):
  3. def next_page_number(self):
  4. if not self.has_next():
  5. return None
  6. return super().next_page_number()
  7. def previous_page_number(self):
  8. if not self.has_previous():
  9. return None
  10. return super().previous_page_number()
  11. class ValidAdjacentNumsPaginator(Paginator):
  12. def _get_page(self, *args, **kwargs):
  13. return ValidAdjacentNumsPage(*args, **kwargs)
  14. class AsyncValidAdjacentNumsPage(AsyncPage):
  15. async def anext_page_number(self):
  16. if not await self.ahas_next():
  17. return None
  18. return await super().anext_page_number()
  19. async def aprevious_page_number(self):
  20. if not await self.ahas_previous():
  21. return None
  22. return await super().aprevious_page_number()
  23. class AsyncValidAdjacentNumsPaginator(AsyncPaginator):
  24. def _get_page(self, *args, **kwargs):
  25. return AsyncValidAdjacentNumsPage(*args, **kwargs)