fabien-michel
fabien-michel

Reputation: 2182

Default pagination with strawberry django

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 ?

Upvotes: 1

Views: 155

Answers (0)

Related Questions