import graphene from graphene import relay from graphene_django import DjangoObjectType from graphene_django.filter import DjangoFilterConnectionField from api.utils import get_by_id_or_slug from portfolio.models import Project class ProjectNode(DjangoObjectType): pk = graphene.Int() class Meta: model = Project filter_fields = ['slug', 'appearance'] interfaces = (relay.Node,) def resolve_pk(self, *args, **kwargs): return self.id class PortfolioQuery(object): project = graphene.Field(ProjectNode, id=graphene.ID(), slug=graphene.String()) projects = DjangoFilterConnectionField(ProjectNode) def resolve_projects(self, info, **kwargs): return Project.objects.all() def resolve_project(self, info, **kwargs): return get_by_id_or_slug(Project, **kwargs)