Я нахожусь в ситуации, когда я хочу изменить поле сериализатора в зависимости от условия. Неважно, где возникает условие, но я хочу иметь возможность переключаться между полями сериализатора, как показано в следующем примере:
class EntrySerializer(serializers.ModelSerializer):
# author defined from ModelSerializer
def get_author_serializer(self):
request = self.context.get('request')
GET = getattr(request, 'GET', {})
if request and GET and GET.get('include_author')=='true':
author_serializer = UserSerializer()
else:
author_serializer = serializers.PrimaryKeyRelatedField(
read_only=True, default=serializers.CurrentUserDefault()
)
return author_serialize
Конечно, это не работает, потому что get_FIELD_serializer
не существует, но я ищу простейшее решение, которое может это сделать.
Я пытался написать author
как свойство в наивной попытке, но это не сработало.
Мне известно, что я могу написать несколько EntrySerializer и использовать get_serializer_class
, но это слишком много стандартного кода для такой небольшой настройки.