TOP

django 序列化器中获取当前登录用户, 以及如何拓展自定义字段

背景

比如在序列化阶段对某字段进行重新载入, 且载入的内容本身需要基于当前请求用户进行动态

此时如何在 序列化器中获取当前用户就需要解决

实现

在 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 中

即可实现拓展自定义字段

posted @ 2022-02-10 10:35  羊驼之歌  阅读(467)  评论(0编辑  收藏  举报