djangographqlrelay

Django relay graphql order by created date


How to query a model as order by created date in django graphene-relay

class CategoryNode(DjangoObjectType):
    class Meta:
        model = Category
        filter_fields = ['name', 'ingredients', 'created_at']
        interfaces = (relay.Node, )



class Query(graphene.ObjectType):
     category = relay.Node.Field(CategoryNode)
     all_categories = DjangoFilterConnectionField(CategoryNode)

Solution

  • I found a solution after going through the Graphene-Django documentation https://docs.graphene-python.org/projects/django/en/latest/filtering/

    Need to create a filterset for the model:

    from django_filters import FilterSet, OrderingFilter
    
    class CategoryFilter(FilterSet):
    class Meta:
        model = Category
        fields = '__all__'
    
        order_by = OrderingFilter(
                   fields=(('created_at'),))
    
    class Query(graphene.ObjectType):
        category = relay.Node.Field(CategoryNode)
        all_categories = DjangoFilterConnectionField(CategoryNode, filterset_class=CategoryFilter)
    
    def resolve_category(self, info, **kwargs):
        return CategoryFilter(kwargs).qs