我正在尝试设置会话,但这给了我错误
不可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。正确的方法是什么?
答案 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
其中AclRoleAccessSerializer
是AclRoleAccess
模型的模型序列化器