<queryset [] =“”>不可JSON序列化-Django会话

时间:2019-01-23 14:01:57

标签: django django-models django-forms django-templates django-views

我正在尝试设置会话,但这给了我错误

  

不可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 :(得分:1)

您正在将queryset设置为不可序列化的会话对象,添加一个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

其中AclRoleAccessSerializerAclRoleAccess模型的模型序列化器