我已经定义了以下graphql模式来创建非活动用户
from .models import User, UserManager
import graphene
from graphene_django import DjangoObjectType
class UserType(DjangoObjectType):
class Meta:
model = User
class PreSignupInput(graphene.InputObjectType):
email = graphene.String(required=True)
terms_of_use = graphene.Boolean(required=True)
class PreSignup(graphene.Mutation):
class Arguments:
pre_signup_data = PreSignupInput(required=False)
user = graphene.Field(UserType)
def mutate(self, info, user_data=None):
user = UserManager().create_inactive_user_with_email(user_data.email, user_data.terms_of_use)
return PreSignup(user=user)
class Mutation(graphene.ObjectType):
pre_signup = PreSignup.Field()
User 类在配置中也定义为AUTH_USER_MODEL, create_inactive_user_with_email 创建User的实例,将其保存到数据库并返回。
每当我运行以下测试时:
from graphene_django.utils.testing import GraphQLTestCase
class UserSchemaTest(GraphQLTestCase):
def test_create_inactive_user(self):
response = self.query(
'''
mutation preSignup($input: PreSignupInput!) {
preSignup(input: $input) {
user {
id
email
}
}
}
''',
op_name='preSignup',
input_data={'email': 'test@example.com', 'terms_of_use': True}
)
print(response.json())
self.assertResponseNoErrors(response)
它失败,并出现Bad Request错误和以下错误消息:
{
'errors': [
{'message': 'Unknown argument "input" on field "preSignup" of type "Mutation".',
'locations': [{'line': 3, 'column': 27}]}]
}
我有什么想念的吗?我用this tutorial做测试。
谢谢!