не поддерживает сериализацию в формате JSON - Django Session - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь установить сессию, но выдает ошибку

не поддерживает сериализацию в формате JSON

 self.request.session['acl_permissions'] = AclRoleAccess.objects.filter(
                Q(acl_company=self.request.user.userprofile.user_company) &
                Q(acl_role=self.request.user.userprofile.user_role) &
                Q(acl_has_access=True)
            )

    if 'acl_permissions' in self.request.session:
                acl_permissions = self.request.session['acl_permissions']
                print(acl_permissions)

Как я могу хранить QuerySet в сеансе. И какой будет правильный путь?

1 Ответ

0 голосов
/ 23 января 2019

Вы устанавливаете набор запросов для объекта сеанса, который не сериализуем, добавляете ModelSerializer и передаете результат queryset в сериализатор с флагом many как True и устанавливаете serializer.data в объекте сеанса.

ваш код будет выглядеть примерно так

query_set = AclRoleAccess.objects.filter(
                acl_company=self.request.user.userprofile.user_company,
                acl_role=self.request.user.userprofile.user_role,
                acl_has_access=True)

serializer = AclRoleAccessSerializer(query_set, many=True)
self.request.session['acl_permissions'] = serializer.data

, где AclRoleAccessSerializer - это сериализатор модели для AclRoleAccess модель

...