Сериализатор Django AUTH0

В моем приложении я использую auth0 для аутентификации. Все работает отлично, я вижу создание новых пользователей в панели администратора и т.д., но есть одна проблема.

когда я перехожу к своей конечной точке, которая отображает данные, у меня есть пустой список. Вот так

{
    "id": "d458196e-49f1-42db-8bc2-ee1dba438953",
    "owner": 1,
    "name": "dsdsds",
    "viewable": []
}

список просматриваемых - это список пользователей, которые могут просматривать объект данных. Поэтому, если вы хотите поделиться своими данными с другом, просто добавьте его email

Как я уже говорил ранее. Этот список доступен для просмотра на уровне админки django и на уровне формы drf, но не в JSON. Как отобразить эти данные?

Модели

from django.contrib.auth.models import AbstractUser
from django.conf import settings

class User(AbstractUser):
    pass

class WalletInstance(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, unique=True)
    name = models.CharField(max_length=30, null=True)
    owner = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='owner', on_delete=models.CASCADE)
    viewable = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='can_view', blank=True)

Settings.py

AUTH_USER_MODEL = 'budget_app.User'

SOCIAL_AUTH_TRAILING_SLASH = False
SOCIAL_AUTH_AUTH0_DOMAIN = '####'
SOCIAL_AUTH_AUTH0_KEY = '####'
SOCIAL_AUTH_AUTH0_SECRET = '####'
SOCIAL_AUTH_AUTH0_SCOPE = [
    'openid',
    'profile',
    'email'
]

AUTHENTICATION_BACKENDS = {
    'social_core.backends.auth0.Auth0OAuth2',
    'django.contrib.auth.backends.ModelBackend'
}

LOGIN_URL = '/login/auth0'
LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = '/'

Serializers

class WalletInstanceSerializer(serializers.ModelSerializer):
    owner = serializers.ReadOnlyField(source='owner.id')
    class Meta:
        model = WalletInstance
        fields = '__all__'
        depth = 1
class WalletInstanceSerializer(serializers.ModelSerializer):
    owner = serializers.ReadOnlyField(source='owner.id')
    viewable = serializers.PrimaryKeyRelatedField(queryset=settings.AUTH_USER_MODEL.objects.all(), many=True)

    class Meta:
        model = WalletInstance
        fields = '__all__'
        depth = 1

Обновление @TeRe Ответ. settings.AUTH_USER_MODEL является строкой, у нее нет объектов-атрибутов. Вы можете использовать get_user_model docs:

from django.contrib.auth import get_user_model


class WalletInstanceSerializer(serializers.ModelSerializer):
    owner = serializers.ReadOnlyField(source='owner.id')
    viewable = serializers.PrimaryKeyRelatedField(queryset=get_user_model().objects.all(), many=True)

    class Meta:
        model = WalletInstance
        fields = '__all__'
        depth = 1

Вернуться на верх