Uncaught (в обещании) Ошибка: ошибка GraphQL: не подлежащий обработке тип: 'dict' - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь использовать функцию загрузки изображений, но получаю сообщение об ошибке "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.

enter image description here

Как загрузить изображение при использовании django-графена?

1 Ответ

0 голосов
/ 13 ноября 2018

Вот хороший пакет, который я использовал и очень доволен: graphene-file-upload

Он обрабатывает многочастные данные и заменяет фактические переменные переданными файлами.

...