天天看點

drf 中serializers.HiddenField使用方法

class CurrentUser(object):
    def set_context(self, serializer_field):
        self.user_obj = serializer_field.context['request'].user

    def __call__(self):
        return self.user_obj

class GetObjectFlow(object):
    def set_context(self, serializer_field):
        self.object_flow = serializer_field.context['request'].data.get('object_flow') # 這裡需要在views中傳進去呀,djangocontext上下文中才能取到

    def __call__(self):
        return self.object_flow


class AddHolidaySerializer(serializers.ModelSerializer, BaseModelSerializer):
    user = serializers.HiddenField(default=CurrentUser())  # 給使用者外鍵賦目前請求的user
    object_flow = serializers.HiddenField(default=GetObjectFlow()) # 後端自己處理一些特殊的外鍵
    status = serializers.HiddenField(default=0)  # 預設新增時給status賦初值

    class Meta:
        model = Holiday
        exclude = ('deleted',)