Import error 'force_text' from 'django.utils.encoding'

Я реализую решение graphql, используя python, graphene и django, и получаю следующую ошибку импорта:

Result: Failure Exception: ImportError: cannot import name 'force_text' from 'django.utils.encoding'

"/home/site/wwwroot/.python_packages/lib/site-packages/graphene_django/utils/utils.py", line 6, in <module> from django.utils.encoding import force_text

Я не уверен в версиях и нужно ли мне импортировать дополнительный модуль. Мой файл requirements.txt выглядит следующим образом:

graphene>=2.1,<3
graphene-django>=2.1,<3
graphql-core>=2.1,<3
graphql-relay==2.0.1
django-filter>=2

Может быть, кто-то сталкивался с подобной проблемой и может посмотреть на версии, которые я использую? Спасибо

в django 4.0 у нас нет force_text

https://docs.djangoproject.com/en/4.0/ref/utils/#module-django.utils.encoding

вместо этого измените force_text на force_str

linux:

YOUR_VENV/lib/PYTHON_VERSION/site-packages/graphene_django/utils/utils.py

windows:

YOUR_VENV/lib/site-packages/graphene_django/utils/utils.py

from django.utils.encoding import force_text

to

from django.utils.encoding import force_str

и

def _camelize_django_str(s):
    if isinstance(s, Promise):
        s = force_text(s)
    return to_camel_case(s) if isinstance(s, six.string_types) else s

to

def _camelize_django_str(s):
    if isinstance(s, Promise):
        s = force_str(s)
    return to_camel_case(s) if isinstance(s, six.string_types) else s

Добавление следующего в файл requirements.txt решило эту проблему:

django<=3
Вернуться на верх