get_field не работает Django сериализатор Rest Framework - PullRequest
0 голосов
/ 09 июля 2020

В serializers.py

class WordSerializer(serializers.ModelSerializer):
    synonym = serializers.ListField(child=serializers.CharField(max_length=100), allow_null=True)

    class Meta:
        model = Word
        fields = ['word', 'id', 'user', 'definition', 'synonym', 'sentence', 'user', 'currently_studying']

, когда исходная модель имеет значение синонима synonym1\nsynonym2\nsynonym3, значение синонима в сериализаторе должно возвращать ['synonym1', 'synonym2', 'synonym3']. Как я могу это сделать?

1 Ответ

1 голос
/ 10 июля 2020

Это не работает для поля синонима, потому что невозможно изменить тип значения со строки на список, но мы можем добавить настраиваемое поле в наш json вывод. Вот пример. ключ в выводе json - «список_синонимов», если вы хотите его изменить, просто измените имя SerializerMethodField () и имя метода (get_ + new_name) и соответственно измените его в списке полей (мета-класс):

class WordSerializer(serializers.ModelSerializer):
    synonym_list = serializers.SerializerMethodField()

    class Meta:
        model = Word
        fields = ['word', 'id', 'user', 'definition', 'synonym', 'sentence', 'user', 'currently_studying', 'synonym_list']

    def get_synonym_list(self, obj):
        return obj.synonym.split("\n")

Это работает для вас?

...