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'