Skip to content

Instantly share code, notes, and snippets.

@klebercode
Last active December 8, 2020 00:37
Show Gist options
  • Select an option

  • Save klebercode/49ac7e7f0561d44bb4e80af97c86e282 to your computer and use it in GitHub Desktop.

Select an option

Save klebercode/49ac7e7f0561d44bb4e80af97c86e282 to your computer and use it in GitHub Desktop.

Revisions

  1. klebercode revised this gist Dec 8, 2020. 1 changed file with 6 additions and 7 deletions.
    13 changes: 6 additions & 7 deletions django-graphene-order-by.py
    Original file line number Diff line number Diff line change
    @@ -3,22 +3,21 @@


    class OrderedDjangoFilterConnectionField(DjangoFilterConnectionField):

    @classmethod
    def resolve_queryset(
    cls, connection, iterable, info, args, filtering_args, filterset_class
    ):
    qs = super(DjangoFilterConnectionField, cls).resolve_queryset(
    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}
    qs = filterset_class(data=filter_kwargs, queryset=qs, request=info.context).qs
    qst = filterset_class(data=filter_kwargs, queryset=qst, request=info.context).qs

    order = args.get('orderBy', None)
    order = args.get("orderBy", None)
    if order:
    if type(order) is str:
    if isinstance(order, str):
    snake_order = to_snake_case(order)
    else:
    snake_order = [to_snake_case(o) for o in order]
    qs = qs.order_by(*snake_order)
    return qs
    qst = qst.order_by(*snake_order)
    return qst
  2. klebercode renamed this gist Dec 8, 2020. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  3. klebercode created this gist Dec 8, 2020.
    24 changes: 24 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,24 @@
    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
    ):
    qs = super(DjangoFilterConnectionField, cls).resolve_queryset(
    connection, iterable, info, args
    )
    filter_kwargs = {k: v for k, v in args.items() if k in filtering_args}
    qs = filterset_class(data=filter_kwargs, queryset=qs, request=info.context).qs

    order = args.get('orderBy', None)
    if order:
    if type(order) is str:
    snake_order = to_snake_case(order)
    else:
    snake_order = [to_snake_case(o) for o in order]
    qs = qs.order_by(*snake_order)
    return qs