Я пытаюсь использовать функцию загрузки изображений, но получаю сообщение об ошибке "Uncaught (in обещание)" Ошибка: ошибка GraphQL: нечитаемый тип: 'dict' ".Я использую react-dropzone
для загрузки изображения.Это дает мне объект File, который я затем передал в функцию мутации с переменными.Вот что я сделал
mutation.py
class UpdatePersonalProfile(graphene.Mutation):
class Arguments:
input = ProfileInput(description="These fields are required", required=True)
success = graphene.Boolean()
errors = graphene.List(graphene.String)
profile = graphene.Field(ProfileNode)
@staticmethod
def mutate(self, info, **args):
print ('info', args, info.context, info.context.FILES, info.context.FILES.get(args.get('input').get('avatar', None)))
is_authenticated = info.context.user.is_authenticated
profile = Profile.objects.get(user=CustomUser.objects.get(id=7))
profile.company_name = args.get('input').get('company_name', None)
profile.bio = args.get('input').get('bio', None)
profile.website = args.get('input').get('website', None)
profile.avatar = info.context.FILES.get(args.get('input').get('avatar', None))
profile.job_title = args.get('input').get('job_title', None)
profile.zip_code = args.get('input').get('zip_code', None)
profile.save()
return UpdatePersonalProfile(profile=profile, success=True, errors=None)
input.py
class Upload(graphene.types.Scalar):
class Meta:
description = '''Variables of this type must be set to null in
mutations. They will be replaced with a filename from a following
multipart part containing a binary file. See:
https://github.com/jaydenseric/graphql-multipart-request-spec'''
@staticmethod
def serialize(value):
return value
@staticmethod
def parse_literal(node):
return node
@staticmethod
def parse_value(value):
return value
class ProfileInput(graphene.InputObjectType):
full_name = graphene.String(description='Full Name')
user = graphene.String(description='User')
bio = graphene.String(description='No more than 1000 characters')
website = graphene.String()
avatar = Upload(description='Avatar')
job_title = graphene.String()
company_name = graphene.String()
zip_code = graphene.String()
Вот данные для ключа аватара, где я использовал файлы [0], что означает целый объект File.
Как загрузить изображение при использовании django-графена?