简体   繁体   中英

AssertionError at /graphql/ Query fields must be a mapping (dict / OrderedDict) with field names as keys or a function which returns such a mapping

I am new to django and graphql, I am trying use graphql in django using the the instructions given in this site.

https://docs.graphene-python.org/projects/django/en/latest/installation/

I followed the instructions carefully but when I enter the url http://127.0.0.1:8000/graphql/

I am getting the error following error.

AssertionError at /graphql/
Query fields must be a mapping (dict / OrderedDict) with field names 
as keys or a function which returns such a mapping.

I just have a single app called demo. The code in the models.py of demo app is as follows...

from django.db import models

# Create your models here.
class UserProfile(models.Model):
    userId = models.IntegerField(primary_key=True)
    userName = models.CharField(max_length=15)
    password = models.CharField(max_length=15)
    address = models.CharField(max_length=30)
    phoneNumber = models.IntegerField()

    class Meta:
        db_table = 'UserProfile'

Here are the relevant parts of the settings.py file in the project folder.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'graphene_django',
    'corsheaders',
    'demo',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

CORS_ORIGIN_ALLOW_ALL = True

GRAPHENE = {
    'SCHEMA': 'abc.schema.schema'
}

abc is the name of the main project folder which contains manage.py .

Here is the urls.py file

from django.contrib import admin
from django.urls import path
from graphene_django.views import GraphQLView

urlpatterns = [
        path('admin/', admin.site.urls),
        path('graphql/', GraphQLView.as_view(graphiql=True)),
    ]

Please help,thanks in advance.

My problem was solved by inserting DjangoObjectType instead of ObjectType in schema.py you can import it: from graphene_django.types import DjangoObjectType

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM