首页 新闻 会员 周边 捐助

请教DRF如何添加最后操作人

0
[待解决问题]

初次使用DRF,对DRF不太熟悉。请教一个问题,大家是如何处理这种情况的?

model:

    create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
    create_user = models.CharField(max_length=32, verbose_name='创建用户')
    update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
    update_user = models.CharField(max_length=32, verbose_name='更新用户')

serializer:

class ProjectsInfoSerializer(serializers.ModelSerializer):
    class Meta:
        model = ProjectsInfo
        fields = '__all__'
        read_only_fields = ['id', 'create_time', 'update_time']

但是,不希望create_user和update_user是由用户填写的,因为输入具有欺骗性,可以通过token获取当前用户,希望直接把当前用户作为create_user和update_user,但是如果在view中去更改属性,会报错:
This QueryDict instance is immutable

views:

    def post(self, request, *args, **kwargs):
        username = request.user.username
        self.request.data['create_user'] = username
        self.request.data['update_user'] = username
        return self.create(request, *args, **kwargs)

其次,还有部分字段,用户可能有大写,有小写,希望在save前统一转换成大写或者小写,这个也是一样的问题,无法操作request.data的数据,请教大家,这种情况是如何处理的?

蜉蝣渡海的主页 蜉蝣渡海 | 菜鸟二级 | 园豆:466
提问于:2020-12-08 16:12
< >
分享
所有回答(1)
0

报错信息是querydict对象是不能被修改的,你可以删除之后重新添加记录,而不能直接修改

Micheal_L | 园豆:173 (初学一级) | 2021-02-19 15:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册