Django rest 框架 - 嵌套序列化程序 - 检索嵌套序列化程序的有效记录和无效错误



我在这里使用"注册系统序列化器"一次检索多个客户端记录。

class ClientRecordSerializer(serializers.Serializer):
client_id = serializers.IntegerField()
date_of_birth = serializers.DateField()
class RegistrationSystemSerializer(serializers.Serializer):
count = serializers.IntegerField()
results = ClientRecordSerializer(many=True)

如果任何时候任何客户端记录无效,那么它就会中止整个提取过程。 即假设我有这样的数据

{
"count" : 4,
"results":[
{
"client_id":"1234",
"date_of_birth":"2012-02-06"
},
{
"client_id":"2345",
"date_of_birth":"2013-02-06"
},   
{
"client_id":"4567",
"date_of_birth":"2014-02-06"
},   
{
"client_id":"1239",
"date_of_birth":"06-02-2017"    # invalid date format
},   
]
}

其中第 4 个客户端的"date_of_birth"格式错误,因为有效日期只能采用"YYYY-MM-DD"格式。如果我在此数据中应用上述序列化,那么它不会给我任何数据,因为其中一个嵌套记录不满足条件。我想要的是从序列化中获取所有三个有效的嵌套记录,但第四个记录出错。

如何使用 Django rest 框架实现相同的目标。

不确定这是否需要,但您可以尝试覆盖反序列化和to_representationsor 序列化进程的to_internal_value

这可能看起来像这样:

class ClientRecordSerializer(serializers.Serializer):
client_id = serializers.IntegerField()
date_of_birth = serializers.DateField()
def to_internal_value(self, data):
try:
data = super(ClientRecordSerializer, self).to_internal_value(data)
return data
except:  
return {'message': 'some error'} 

最新更新