Django-rest-framework: TypeError: set_context () отсутствует 1 обязательный позиционный аргумент: 'serializer_field'

Созданный на 24 июн. 2019  ·  3Комментарии  ·  Источник: encode/django-rest-framework

Контрольный список

  • [] Я убедился, что эта проблема существует в ветви master платформы Django REST.
  • [] Я искал похожие проблемы как в открытых, так и в закрытых тикетах и ​​не могу найти дубликатов.
  • [] Это не вопрос использования. (Вместо этого их следует направлять в дискуссионную группу .)
  • [] Это не может рассматриваться как сторонняя библиотека. (Мы предпочитаем, чтобы новые функции были в форме сторонних библиотек, где это возможно.)
  • [] Я свел вопрос к простейшему случаю.
  • [] Я включил неудачный тест в качестве запроса на вытягивание. (Если вы не можете сделать это, мы все равно можем принять проблему.)

Действия по воспроизведению

класс GraphDomainSerializer (сериализаторы.ModelSerializer):
user = serializers.HiddenField (по умолчанию = serializers.CurrentUserDefault)

Ожидаемое поведение

Фактическое поведение

класс CurrentUserDefault (объект):
def set_context (self, serializer_field):
self.user = serializer_field.context ['запрос']. пользователь

def __call__(self):
    return self.user

def __repr__(self):
    return unicode_to_repr('%s()' % self.__class__.__name__)

def get_default (сам):
"" "
Вернуть значение по умолчанию, которое будет использоваться при проверке данных, если нет ввода
предоставляется для этого поля.

    If a default has not been set for this field then this will simply
    raise `SkipField`, indicating that no value should be set in the
    validated data for this field.
    """
    if self.default is empty or getattr(self.root, 'partial', False):
        # No default, or this is a partial update.
        raise SkipField()
    if callable(self.default):
        if hasattr(self.default, 'set_context'):
            **self.default.set_context(self)**
        return self.default()
    return self.default

Файл "/Users/lishijin/.pyenv/versions/3.7.2/lib/python3.7/site-packages/rest_framework/fields.py", строка 490, в get_default
self.default.set_context (сам)
TypeError: set_context () отсутствует 1 обязательный позиционный аргумент: 'serializer_field'
[24 / июн / 2019 14:34:45] "POST / graphs / HTTP / 1.1" 500 21130

Самый полезный комментарий

Значением по умолчанию должен быть экземпляр, а не класс: serializers.CurrentUserDefault() как показано в документации.

Все 3 Комментарий

Значением по умолчанию должен быть экземпляр, а не класс: serializers.CurrentUserDefault() как показано в документации.

Значением по умолчанию должен быть экземпляр, а не класс: serializers.CurrentUserDefault()как показано в документации

it solved the problem

Значением по умолчанию должен быть экземпляр, а не класс: serializers.CurrentUserDefault() как показано в документации.

Спасибо , Вы помогли мне решить эту проблему

Была ли эта страница полезной?
0 / 5 - 0 рейтинги