Skip to content

Instantly share code, notes, and snippets.

@klebercode
Last active December 8, 2020 00:37
Show Gist options
  • Save klebercode/49ac7e7f0561d44bb4e80af97c86e282 to your computer and use it in GitHub Desktop.
Save klebercode/49ac7e7f0561d44bb4e80af97c86e282 to your computer and use it in GitHub Desktop.
Django Graphene Order By
from graphene_django.filter import DjangoFilterConnectionField
from graphene.utils.str_converters import to_snake_case
class OrderedDjangoFilterConnectionField(DjangoFilterConnectionField):
@classmethod
def resolve_queryset(
cls, connection, iterable, info, args, filtering_args, filterset_class
):
qst = super(DjangoFilterConnectionField, cls).resolve_queryset(
connection, iterable, info, args
)
filter_kwargs = {k: v for k, v in args.items() if k in filtering_args}
qst = filterset_class(data=filter_kwargs, queryset=qst, request=info.context).qs
order = args.get("orderBy", None)
if order:
if isinstance(order, str):
snake_order = to_snake_case(order)
else:
snake_order = [to_snake_case(o) for o in order]
qst = qst.order_by(*snake_order)
return qst
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment