Django 序列化问题

django 序列化类中,若涉及到默认值时,在项目启动后,其值不会再修改,如示例中的date_expired字段,即为项目启动时的时间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class RegistionSerializer(serializers.ModelSerializer):
"""注册"""
phone = serializers.CharField(required=True, allow_blank=False,
allow_null=False)
smscode = serializers.CharField(
required=True, write_only=True, help_text='验证码', max_length=6
)
password = serializers.CharField(write_only=True)
created_by = serializers.CharField(default="Registion")
source = serializers.CharField(default=User.SOURCE_REGISTION)
date_expired = serializers.DateTimeField(
default=timezone.now() + timezone.timedelta(days=3))

class Meta:
model = User
fields = [
'id', 'name', 'username', 'phone', 'smscode', 'password',
'created_by', 'source', 'date_expired'
]
read_only_fields = ['id']

# 通过再次赋值进行修改
def validate(self, attrs):
attrs["date_expired"] = timezone.now() + timezone.timedelta(days=3)
return attrs
-------------本文结束感谢您的阅读-------------