Django Rest Framework - TypeError: reverse() получил неожиданный аргумент ключевого слова 'request'
У меня есть несколько тестов, написанных для приложения django, и все тесты должны пройти, чтобы произошло автоматическое развертывание.
Неожиданно начали выходить из строя несколько тестов, ни один из которых не был затронут в последнем коммите. Ошибка исходит от сериализатора, использующего функцию 'reverse' фреймворка django rest.
# serializers.py
from rest_framework.reverse import reverse
from rest_framework.serializers import ModelSerializer, SerializerMethodField
from my_app.models import ConfigVersion
class ConfigVersionMetadataSerializer(ModelSerializer):
class Meta:
model = ConfigVersion
fields = ('id', 'config', 'config_name',
'hyperlink', 'version')
hyperlink = SerializerMethodField()
def get_hyperlink(self, obj):
return reverse(
'versions-list',
kwargs={
'configurations_pk': obj.config.id,
'version_pk': obj.id
},
request=self.context['request']
)
Все тесты, вызывающие этот сериализатор, теперь проваливаются с ошибкой TypeError: reverse() got an unexpected keyword argument 'request'
В документации по остальным фреймворкам Django говорится, что 'request' является включенным и рекомендуемым аргументом https://www.django-rest-framework.org/api-guide/reverse/.
После изучения документации я искал изменения версии зависимостей в журналах сборки, чтобы узнать, были ли изменения кода, но единственное обновление зависимости предположительно не связано с этим (pytz). Я не совсем понимаю источник этой проблемы, поскольку пару дней назад тесты работали нормально, и, похоже, не было никаких изменений в тестах, сериализаторах, представлениях или необходимых библиотеках.
попробуйте вместо этого использовать reverse_lazy.
return reverse_lazy(
'versions-list',
kwargs={
'configurations_pk': obj.config.id,
'version_pk': obj.id
},
request=self.context['request']
)