Как показать пользователя в TokenSerializer dj-rest-auth

Я пытаюсь вернуть UserSerializer после успешного входа в систему через dj-rest-auth.

Я выполнил все шаги, которые были описаны в После входа в систему с помощью `rest-auth`, как вернуть дополнительную информацию? в котором есть похожая проблема, но он по-прежнему не показывает информацию о пользователе после входа.

что я получаю после успешного входа в систему

REST_AUTH_SERIALIZERS = {
    'TOKEN_SERIALIZER': 'blink.user.serializers.TokenSerializer',
    'USER_DETAILS_SERIALIZER': 'blink.user.serializers.UserSerializer'
}
#settings.py
class UserSerializer(serializers.ModelSerializer):

    def __init__(self, *args, **kwargs):
        exclude_fields = kwargs.pop('exclude_fields', None)
        super(UserSerializer, self).__init__(*args, **kwargs)
        if self.context and 'view' in self.context and self.context['view'].__class__.__name__ == 'UsersView':
            exclude_fields = ['subscription', 'avatar', 'file']
        if exclude_fields:
            for field_name in exclude_fields:
                self.fields.pop(field_name)

    class Meta:
        fields = ('id', 'username', 'email', 'last_login', 'first_name', 'last_name')
        model = User

class TokenSerializer(serializers.ModelSerializer):
    user = UserSerializer()

    class Meta:
        model = TokenModel
        fields = '__all__'

#User.serializers.py
class TokenSerializer(serializers.ModelSerializer):
    user = UserSerializer()
    email = serializers.EmailField(source='user.email', read_only=True)
    full_name = serializers.CharField(source='user.get_full_name', read_only=True)

    class Meta:
        model = TokenModel
        fields = ['key', 'created', 'user', 'email', 'full_name']

Вот как можно показать, если вы хотите отобразить некоторые поля. Убедитесь, что ваш TokenModel связан с User model

Я решил свою проблему, единственная проблема была с моим settings.py

dj-rest-auth изменил способ настройки сериализатора токенов, начиная с версии 3.0.0, он отлично работает и в последней версии (6.0.0)

REST_AUTH = {
    'TOKEN_SERIALIZER': 'blink.user.serializers.TokenSerializer',
    'USER_DETAILS_SERIALIZER': 'blink.user.serializers.UserSerializer',

вместо , который работал только для dj-rest-auth <= 2.2.8 версии

REST_AUTH_SERIALIZERS = {
    'TOKEN_SERIALIZER': 'blink.user.serializers.TokenSerializer',
    'USER_DETAILS_SERIALIZER': 'blink.user.serializers.UserSerializer'
}
Вернуться на верх