我想知道屏蔽某些响应部分的最佳方法是什么。我将用一个例子来解释。假设我有一个Person
模型,有first_name
,last_name
和email
。我使用PersonSerializer
返回该数据。
一个示例响应可以是
{
"first_name": "John",
"last_name": "Doe",
"email": "johndoe@gmail.com"
}
我想"隐藏"将电子邮件作为回复呈现。我仍然希望它作为键存在,我只是想掩盖这个值。因此,我想通过首先在PersonModel
中设置这个类来实现这个响应类:
class MASK:
mask_fields = (
'email'
...
) //there can be multiple values here
要得到这个响应:
{
"first_name": "John",
"last_name": "Doe",
"email": "__MSK__" // so it get's masked
}
因此,在使用相同的序列化器类创建新患者时,这也不应该影响序列化。
谁知道最好的方法是什么?也许覆盖to_representation
方法或?你可以写你自己的掩码函数
class DemoSerializer(serializers.ModelSerializer):
email = serializers.SerializerMethodField()
class Meta:
model = Demo
fields = ("id","email")
def get_email(self,obj):
email_id = str(id) + "-" + random.randrange(1,9999999)
# you can write your on Hashing logic
return email_id
对于将来的引用,你可以从"-"得到obj ID