I am using graphen-django to build the GraphQL API. I successfully create this API, but I cannot pass an argument to filter my response.
This is my models.py :
from django.db import models class Application(models.Model): name = models.CharField("nom", unique=True, max_length=255) sonarQube_URL = models.CharField("Url SonarQube", max_length=255, blank=True, null=True) def __unicode__(self): return self.name
This is my schema.py : graphene import from graphene_django import DjangoObjectType from import Application models
class Applications(DjangoObjectType): class Meta: model = Application class Query(graphene.ObjectType): applications = graphene.List(Applications) @graphene.resolve_only_args def resolve_applications(self): return Application.objects.all() schema = graphene.Schema(query=Query)
My urls.py :
urlpatterns = [ url(r'^', include(router.urls)), url(r'^admin/', admin.site.urls), url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')), url(r'^api-token-auth/', authviews.obtain_auth_token), url(r'^graphql', GraphQLView.as_view(graphiql=True)), ]
As you can see, I also have a REST API.
My settings.py contains the following:
GRAPHENE = { 'SCHEMA': 'tibco.schema.schema' }
I follow this: https://github.com/graphql-python/graphene-django
When sending this request:
{ applications { name } }
I have an answer:
{ "data": { "applications": [ { "name": "foo" }, { "name": "bar" } ] } }
So it works!
But when I try to pass such an argument:
{ applications(name: "foo") { name id } }
I have this answer:
{ "errors": [ { "message": "Unknown argument \"name\" on field \"applications\" of type \"Query\".", "locations": [ { "column": 16, "line": 2 } ] } ] }
What did I miss? Or maybe I'm something wrong?