Default pagination with strawberry django

48 views Asked by At

According to the doc and this issue there is no default pagination or maximum limit on returned results.

I've managed to have a default pagination by defining field_cls :

PAGINATION_MAX_LIMIT = 1000

class DefaultPaginationStrawberryDjangoField(StrawberryDjangoField):

    def apply_pagination(self, queryset, pagination=None):
        if pagination is None:
            pagination = OffsetPaginationInput()
        if pagination.limit > PAGINATION_MAX_LIMIT or pagination.limit == -1:
            pagination.limit = PAGINATION_MAX_LIMIT
        return super().apply_pagination(queryset, pagination)


@strawberry.django.type(Project, pagination=True)
class ProjectType: 
  ...

@strawberry.type
class Query:
    projects: list[ProjectType] = strawberry.django.field(field_cls=DefaultPaginationStrawberryDjangoField)

Since I do not want to use Relay, there is a better / cleaner way ?

0

There are 0 answers