Django rest framework custom Token (отправка объекта User с токеном доступа и рефреша)

Я пытаюсь создать пользовательский токен для отправки объекта пользователя вместе с доступом и обновлением.

token_serializer.py

from rest_framework_simplejwt.serializers import (
    TokenObtainSerializer,
    RefreshToken,
    api_settings,
    update_last_login,
)
from django.core import serializers
from app.models.user import AppUser


class TokenSerializer(TokenObtainSerializer):
    @classmethod
    def get_token(cls, user):
        return RefreshToken.for_user(user)

    def validate(self, attrs):
        data = super().validate(attrs)

        refresh = self.get_token(self.user)

        data["refresh"] = str(refresh)
        data["access"] = str(refresh.access_token)

        serialized_app_user = serializers.serialize("json", Appuser)
        app_user = serialized_app_user .objects.filter(pk=self.user.id).first()

        
        if app_user:
            data["user"] = app_user
        else:
            data["user"] = None

        if api_settings.UPDATE_LAST_LOGIN:
            update_last_login(None, self.user)

        return data


token_view.py

from rest_framework_simplejwt.views import TokenViewBase
from app.api.serializers import TokenSerializer


class TokenView(TokenViewBase):
    serializer_class = TokenSerializer

Этот код привел к этой ошибке: 'ModelBase' object is not iterable

Должен ли я добавить queryset в класс представления? Если да, то какую модель я должен добавить?

Если вам действительно нужна информация о пользователе в конечной точке получения токена, то вам нужно сериализовать объект AppUser:

...
from rest_framework import serializers
from app.models.user import AppUser


class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = AppUser
        fields = '__all__'  # or any specific fields


class TokenSerializer(TokenObtainSerializer):
    def validate(self, attrs):
        ...
        app_user = serialized_app_user .objects.filter(pk=self.user.id).first()
        if app_user:
            data["user"] = UserSerializer(app_user).data
        else:
            data["user"] = None
Вернуться на верх