【发布时间】:2018-11-06 15:09:30
【问题描述】:
我使用 django rest 和 neo4j。对于我的项目,在创建节点时,我将获得当前节点将与其相关的节点的 ID 列表。为了表示,我将表示包含连接到该节点的节点数据的字典列表。但是因为序列化器是字符串列表,所以字典会转换成字符串。
我的问题不在于 neo4j。我要求在 django rest 中使用不同的数据类型序列化同一字段的读写。
这是我的代码:
class ScreenSerializer(serializers.Serializer):
questions = serializers.ListSerializer(child=serializers.CharField())
def create(self, validated_data):
questions = validated_data.pop('questions')
screen = Screen(**validated_data).save()
for question_uid in questions:
# connect relation in neo4j between screen and questions
screen.save()
return screen
def to_representation(self, obj):
obj.questions = # List of dicts that contain every connected node data
obj = super().to_representation(obj)
return obj
我尝试了 read_only、write_only 但这对我没有帮助。
输入示例:['123456', '654321']
输出示例:[{some data of node 123456},{some data of node 654321}]
但我目前的输出是这样的:['{some data of node 123456}', '{some data of node 654321}']
编辑:
neverwalkaloner 的工作基础答案:
def to_representation(self, obj):
obj.questions = # List of dicts that contain every connected node data
self.fields['questions'] = serializers.ListSerializer(child=serializers.DictField())
obj = super().to_representation(obj)
return obj
【问题讨论】:
标签: django python-3.x neo4j django-rest-framework