【发布时间】:2021-03-22 23:24:12
【问题描述】:
我有两个简单的序列化器
class UserSerializer(Serializer);
name = serializers.CharField(required=False, default='Mile')
age = serializers.IntegerField(required=False, default=25)
class AccountSerializer(Serializer):
account_id = serializers.UUIDField(required=False, default=uuid4())
user = UserSerializer()
如果未指定,我想在 AccountSerializer 中设置默认用户。 例如,
account = AccountSerializer(data={'account_id': uuid.UUID('e623429d-b1d1-4238-91b8-03e6f5ec58f1')})
account.is_valid()
account.data
{
'account_id': 'e623429d-b1d1-4238-91b8-03e6f5ec58f1',
'user': {
'name': 'Mike', # user must be default
'age': 25
}
}
我还想在“用户字段”中设置自己的值,并默认保留其他字段 例如,
account = AccountSerializer(data={'account_id': uuid.UUID('e623429d-b1d1-4238-91b8-03e6f5ec58f1'),
'user': {'name': 'Julie'}})
account.is_valid()
account.data
{
'account_id': 'e623429d-b1d1-4238-91b8-03e6f5ec58f1',
'user': {
'name': 'Julie', # user name must be 'Julie' but age by default
'age': 25
}
}
我应该如何实现这个?请注意,我不会将模型保存到数据库中!我只需要检查传入的 json 并将字段设置为默认值(如果未设置)
【问题讨论】:
标签: python-3.x django django-models serialization django-rest-framework