Cipher
Cipher

Reputation: 2122

<QuerySet []> is not JSON serializable - Django Session

I am trying to set session but it is giving me error

is not JSON serializable

 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)

How can i store QuerySet in Session. And what will be right way?

Upvotes: 1

Views: 650

Answers (1)

Tayyab Razzaq
Tayyab Razzaq

Reputation: 461

you are setting queryset to session object which is not serializable, add an ModelSerializer and pass queryset result to serializer with many flag as True and set serializer.data to session object.

your code will look something like this

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

where AclRoleAccessSerializer is model serializer for AclRoleAccess model

Upvotes: 4

Related Questions