Django / DRF: AttributeError: у объекта '__proxy__' нет атрибута '_delegate_text'

Я использую Django==5.0.1 и djangorestframework==3.14.0

Я создал модель Django, которая использует gettext_lazy для названия поля verbose. Однако, когда я пытаюсь сериализовать ее с помощью drf serializers.ModelSerializer и пытаюсь восстановить ее, я получаю ошибку AttributeError: 'proxy' object has no attribute '_delegate_text'.

Похоже, что в django.utils.functional раньше был атрибут класса cls._delegate_text, который больше не существует. Однако функция smart_repr в rest_framework.utils.representation все еще пытается получить к нему доступ.

Имеет ли это значение только для функции repr() или это может повлиять на мое приложение в противном случае? Кто-нибудь знает, как решить эту проблему?

Моя модель:

from django.utils.translation import gettext_lazy as _


class CustomUser(AbstractUser):
    email = models.EmailField(_("email address"), unique=True)
    ....


class CustomUserSerializer(serializers.ModelSerializer):
    class Meta:
        model = CustomUser
        fields = ["email", "first_name", "last_name"]
        read_only_fields = ["email", "first_name", "last_name"]

DRF smart_repr:

def smart_repr(value):
    if isinstance(value, models.Manager):
        return manager_repr(value)

    if isinstance(value, Promise) and value._delegate_text:
        value = force_str(value)

    value = repr(value)

    # Representations like u'help text'
    # should simply be presented as 'help text'
    if value.startswith("u'") and value.endswith("'"):
        return value[1:]

    # Representations like
    # <django.core.validators.RegexValidator object at 0x1047af050>
    # Should be presented as
    # <django.core.validators.RegexValidator object>
    return re.sub(' at 0x[0-9A-Fa-f]{4,32}>', '>', value)

код ошибки:

serializer = CustomUserSerializer()
print(repr(serializer))

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/local/lib/python3.11/site-packages/rest_framework/serializers.py", line 530, in __repr__
    return representation.serializer_repr(self, indent=1)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/rest_framework/utils/representation.py", line 82, in serializer_repr
    ret += serializer_repr(field, indent + 1)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/rest_framework/utils/representation.py", line 88, in serializer_repr
    ret += field_repr(field)
           ^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/rest_framework/utils/representation.py", line 55, in field_repr
    kwarg_string = ', '.join([
                             ^
  File "/usr/local/lib/python3.11/site-packages/rest_framework/utils/representation.py", line 56, in <listcomp>
    '%s=%s' % (key, smart_repr(val))
                    ^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/rest_framework/utils/representation.py", line 30, in smart_repr
    if isinstance(value, Promise) and value._delegate_text:
                                      ^^^^^^^^^^^^^^^^^^^^
AttributeError: '__proxy__' object has no attribute '_delegate_text'
Вернуться на верх