Возвращаемое значение на основе условия в сериализаторе - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть модель Entry в моем приложении, и когда она удаляется, я просто отмечаю ее как удаленную, а не как мягкое удаление (поэтому исходное содержимое остается в базе данных). Я хочу реализовать логику в своем классе Serializer, чтобы, если запись помечена как удаленная (логическое поле), поле «содержимое» возвращает значение «удалено» вместо исходного содержимого. Я уже реализовал логику, что, если она удалена, она не может быть изменена.

Я пытался использовать CharField с параметром source, но тогда он должен быть доступен только для чтения, чтобы он не работал, так как я все еще хочу, чтобы содержимое было доступно для записи.

1 Ответ

0 голосов
/ 20 ноября 2018

Вы можете использовать SerializerMethodField для этой цели: -

https://www.django -rest-framework.org / api-guide / fields / # serializermethodfield

class EntrySerializer(serializers.ModelSerializer):
    content = serializers.SerializerMethodField()

    class Meta:
        model = Entry

    def get_content(self, obj):
        if obj.deleted:
            return "Deleted"
        return obj.content
...