0

我无法让 Django 将 AL_NODE 序列化为模型序列化器。是否可以序列化 AL_NODE?

这是我的代码:

class UserSecuritySelectionModelSerializers(serializers.ModelSerializer):

class Meta:
    model = UserSecuritySelectionModel()
    fields = ('hasChildNode', 'classificationNames', 'tgtWeight','currWeight','SSM','ext_model_id')

以下是数据样本及其在数据库中的结构: 数据库

我的views.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)
4

1 回答 1

0

您说它不起作用,但您没有包含有关您遇到的错误的任何详细信息。这让这里的一切都是猜测。

您应该只是设置对model类的引用,而不是实际创建模型的实例

model = UserSecuritySelectionModel()

# should be
class Meta:
    model = UserSecuritySelectionModel

接下来,为了安全起见,我认为您应该明确传递实例。这不是必需的,但它使您的意图明确:

UserSecuritySelectionModelSerializers(instance=rootNode)

第三,只返回一个标准Response,而不是一个JsonResponse,DRF 将为您进行内容协商。这就是你使用它的原因。

return Response(MyLongSerializer(instance=root).data)

最后,发送201有什么理由吗?您似乎没有在视图中创建任何内容。如果是,请像这样发送:

return Response(..., status=HTTP_201_CREATED)
于 2016-01-15T03:07:22.177 回答