Я использую django rest с neo4j.Для моего проекта при создании узла я получу список идентификаторов для узлов, к которым будет относиться текущий узел.Для представления я представлю список диктов, которые содержат данные узлов, подключенных к этому узлу.Но из-за сериализатора, который является списком строк, dicts преобразуется в строку.
Моя проблема не в 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