我的应用程序中有一个Entry模型,当删除它时,我只是标记为已删除,而不是软删除(因此原始内容保留在数据库中)。我想在我的序列化器类中实现一个逻辑,如果一个条目被标记为已删除(布尔字段),则字段“内容”将返回值“已删除”,而不是原始内容。我已经实现了逻辑,如果删除则无法更改。
我尝试将CharField与source参数一起使用,但是它必须是只读的,因此将无法正常工作,因为我仍然希望内容是可写的。
答案 0 :(得分:0)
您可以为此使用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