背景
比如在序列化阶段对某字段进行重新载入, 且载入的内容本身需要基于当前请求用户进行动态
此时如何在 序列化器中获取当前用户就需要解决
实现
在 self 上下午文 context 中的 request 中可以取到. 注意 是 .user 而不是 ["user"]
此处可以开调试模式在 self 里面找找就可以找到. 记录下来避免每次都去找有点麻烦
# 工单详情序列化器
class OrderDetailModelSerializer(serializers.ModelSerializer):
is_flavor = serializers.SerializerMethodField()
def get_is_flavor(self, obj):
user = self.context['request'].user
return obj.is_flavor(user.u_name or user.username)
class Meta:
model = models.Order
fields = [
...,
"is_flavor"
]
此处的实例. is_flavor 字段是数据库不存在的动态字段.
通过 serializers.SerializerMethodField() 以及 get_ + 字段名, 并且讲字段名放入 fields 中
即可实现拓展自定义字段