Django models 使用Django序列化程序将Treebeard AL_节点序列化为JSON

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',

我无法让Django将AL_节点序列化为modelserializer。是否可以序列化AL_节点

这是我的密码:

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)