<;查询集[]>;JSON不可序列化-Django会话
我试图设置会话,但它给了我错误 JSON不可序列化<;查询集[]>;JSON不可序列化-Django会话,django,django-models,django-forms,django-templates,django-views,Django,Django Models,Django Forms,Django Templates,Django Views,我试图设置会话,但它给了我错误 JSON不可序列化 如何在会话中存储QuerySet。正确的方法是什么?您正在将queryset设置为不可序列化的会话对象,添加一个ModelSerializer,并将queryset结果传递给序列化器,其中many标志为True,并将serializer.data设置为会话对象 您的代码将如下所示 query_set = AclRoleAccess.objects.filter( acl_company=self.request.
如何在会话中存储QuerySet。正确的方法是什么?您正在将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
model的模型序列化程序,您正在将queryset设置为不可序列化的会话对象,添加一个ModelSerializer
并将queryset
结果传递给带有many
标记为True
的序列化程序,并将serializer.data设置为session对象
您的代码将如下所示
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
model的模型序列化程序,在会话中存储ID在会话中您不需要Q对象
,如果您在查询中仅使用“AND”,有关详细信息,请参阅此名称“AclRoleAccessSerializer”未定义。我建议您使用创建AclRoleAccessSerializer
序列化程序。如果未使用DRF,则可以迭代查询集以获取数据serialized_data=[acl_object.id for acl_object in query_set]
self.request.session['acl_permissions']=serialized_data
如果在查询中仅使用“AND”,则不需要Q object
,有关详细信息,请参阅此名称“AclRoleAccessSerializer”未定义。我建议您使用创建AclRoleAccessSerializer
序列化程序。如果未使用DRF,则可以迭代查询集以获取数据serialized_data=[acl_object.id for acl_object in query_set]
self.request.session['acl_permissions']=serialized_data