我正在使用" RegistrationSystemSerializer"一次检索多个客户端记录。序列化在这里。
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
},
]
}
其中" date_of_birth"第四个客户的格式错误,因为有效日期只能在" YYYY-MM-DD"格式。如果我在此数据中应用上面的序列化,那么它将不会给我任何数据,因为其中一个嵌套记录不满足条件。我想要的是从序列化中获取所有三个有效的嵌套记录,但是第四个记录的错误。
如何使用Django rest框架实现相同目的。
答案 0 :(得分:0)
不确定这是否是您需要的,但您可以尝试覆盖to_internal_value
以进行反序列化和to_representation
序列化过程。
这可能看起来像这样:
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'}