Django REST框架 - serializer.object.value ='x'在serializer.save()之前不会改变值

时间:2014-09-15 22:53:19

标签: django django-rest-framework

我现在有一个简单的POST,执行以下操作 -

def post(self, request, format=None):
    serializer = CalendarSerializer(data=request.DATA)
    if serializer.is_valid():
        serializer.object.evntmst_name='cal_test'
        serializer.save()
        return Response(serializer.data, status=status.HTTP_201_CREATED)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

我有一个XML,我正在帖子上导入evntmst_name为“cal_daily”。在做一个帖子时它成功通过,但evntmst_name的值没有改变。发布后,我在数据库中获得相同的“cal_daily”值,而不是应该设置为“cal_test”。我错过了什么?

1 个答案:

答案 0 :(得分:0)

我认为我通过另一种方式做到这一点,或者我想做的方式(在视图中)是不可能的。我为GET制作了2个独立的串行器1,为PUT / PATCH制作了1个。

在PUT / PATCH的序列化器中,我定义了改变字段值的逻辑 -

class CalendarPUTSerializer(serializers.ModelSerializer):

    class Meta:
        model = Evntmst
        resource_name = 'evntmst'
        fields = ('evntmst_id', 'evntmst_name')

    def transform_evntmst_id(self, obj, value):
        if obj.evntmst_id == 1939:
            return 1937