Django models 使用Django序列化程序将Treebeard AL_节点序列化为JSON
我无法让Django将AL_节点序列化为modelserializer。是否可以序列化AL_节点 这是我的密码:Django models 使用Django序列化程序将Treebeard AL_节点序列化为JSON,django-models,django-treebeard,Django Models,Django Treebeard,我无法让Django将AL_节点序列化为modelserializer。是否可以序列化AL_节点 这是我的密码: class UserSecuritySelectionModelSerializers(serializers.ModelSerializer): class Meta: model = UserSecuritySelectionModel() fields = ('hasChildNode', 'classificationNames', 'tgtWeight',
class UserSecuritySelectionModelSerializers(serializers.ModelSerializer):
class Meta:
model = UserSecuritySelectionModel()
fields = ('hasChildNode', 'classificationNames', 'tgtWeight','currWeight','SSM','ext_model_id')
以下是数据示例及其在数据库中的结构:
myviews.py中的代码
if request.is_ajax() and id is not None:
rootNode = UserSecuritySelectionModel.objects.get(SSM_id=id, classificationNameNode__isnull=True)
if not rootNode.is_root():
node = rootNode.get_root()
data = serializers.serialize('json', node, use_natural_foreign_keys=True)
return JsonResponse(data, safe=False)
userSelectionModelSerializer = UserSecuritySelectionModelSerializers(rootNode)
#data = serializers.serialize('json', [rootNode], use_natural_foreign_keys=True)
return JsonResponse (userSelectionModelSerializer.data, status=201, safe=False)
你说它不起作用,但是你没有包括任何关于你所得到的错误的细节。这使得这里的一切都是猜测 您应该只设置类的
模型
引用,而不是实际创建模型的实例
model = UserSecuritySelectionModel()
# should be
class Meta:
model = UserSecuritySelectionModel
接下来,为了安全起见,我认为应该显式地传入实例。这不是必需的,但它清楚地表明了您的意图:
UserSecuritySelectionModelSerializers(instance=rootNode)
第三,只需返回标准的响应
,而不是JsonResponse
,DRF将为您进行内容协商。这就是你使用它的原因
return Response(MyLongSerializer(instance=root).data)
最后,是否有任何理由发送201?您似乎没有在视图中创建任何内容。如果是,请按以下方式发送:
return Response(..., status=HTTP_201_CREATED)