初次使用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的数据,请教大家,这种情况是如何处理的?
报错信息是querydict对象是不能被修改的,你可以删除之后重新添加记录,而不能直接修改