From 5253b0802e7950dda35adda3bbfcbd8de42874d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BC=BA?= <1206709430@qq.com> Date: Sun, 25 Apr 2021 20:09:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DBUG(=E6=A1=86=E6=9E=B6?= =?UTF-8?q?=E7=B1=BB):=20serializers.py=20=E4=B8=ADfields=20=E8=BF=87?= =?UTF-8?q?=E6=BB=A4bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dvadmin-backend/apps/vadmin/op_drf/serializers.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/dvadmin-backend/apps/vadmin/op_drf/serializers.py b/dvadmin-backend/apps/vadmin/op_drf/serializers.py index b642d9e..7581046 100644 --- a/dvadmin-backend/apps/vadmin/op_drf/serializers.py +++ b/dvadmin-backend/apps/vadmin/op_drf/serializers.py @@ -1,7 +1,10 @@ +from functools import cached_property + from rest_framework import serializers -from rest_framework.serializers import ModelSerializer from rest_framework.fields import empty from rest_framework.request import Request +from rest_framework.serializers import ModelSerializer +from rest_framework.utils.serializer_helpers import BindingDict class CustomModelSerializer(ModelSerializer): @@ -37,7 +40,7 @@ class CustomModelSerializer(ModelSerializer): if self.creator_field_name in self.fields.fields: validated_data[self.creator_field_name] = self.request.user if self.dept_belong_id_field_name in self.fields.fields: - validated_data[self.dept_belong_id_field_name] = getattr(self.request.user,'dept_id',None) + validated_data[self.dept_belong_id_field_name] = getattr(self.request.user, 'dept_id', None) return super().create(validated_data) def update(self, instance, validated_data): @@ -51,11 +54,11 @@ class CustomModelSerializer(ModelSerializer): return getattr(self.request.user, 'username', None) return None - - - @property + @cached_property def fields(self): - fields = super().fields + fields = BindingDict(self) + for key, value in self.get_fields().items(): + fields[key] = value if not hasattr(self, '_context'): return fields