【发布时间】:2020-01-16 22:30:21
【问题描述】:
我开发了一个网络挂钩来接收来自我的银行的交易。在将数据保存到我的数据库之前,我使用 Django-rest-framework 来验证数据。但是,我的银行为“已解决”字段传递了一个空白字符串,而 Django-rest-framework 似乎无法验证日期时间字段中具有空白值的表单。 null 可以,但空字符串不行。怎么办?
我的银行传递的 JSON:
{
"type": "transaction.created",
"data": {
"account_id": "acc_00008gju41AHyfLUzBUk8A",
"amount": -350,
"created": "2015-09-04T14:28:40Z",
"currency": "GBP",
"description": "Ozone Coffee Roasters",
"id": "tx_00008zjky19HyFLAzlUk7t",
"category": "eating_out",
"is_load": false,
"settled": "",
"merchant": {
"address": {
"address": "98 Southgate Road",
"city": "London",
"country": "GB",
"latitude": 51.54151,
"longitude": -0.08482400000002599,
"postcode": "N1 3JD",
"region": "Greater London"
},
"created": "2015-08-22T12:20:18Z",
"group_id": "grp_00008zIcpbBOaAr7TTP3sv",
"id": "merch_00008zIcpbAKe8shBxXUtl",
"logo": "https://pbs.twimg.com/profile_images/527043602623389696/68_SgUWJ.jpeg",
"emoji": "????",
"name": "The De Beauvoir Deli Co.",
"category": "eating_out"
}
}
}
class MerchantSerializer(serializers.Serializer):
id = serializers.CharField(required=True, max_length=50)
name = serializers.CharField(required=True, max_length=100)
logo = serializers.URLField(max_length=250, required=False)
class DataSerializer(serializers.Serializer):
account_id = serializers.CharField(required=True, max_length=50)
amount = serializers.IntegerField(required=True)
created = serializers.DateTimeField()
currency = serializers.CharField(required=True, max_length=3)
description = serializers.CharField(required=True, max_length=250)
id = serializers.CharField(required=True, max_length=50)
category = serializers.CharField(required=True, max_length=100)
is_load = serializers.BooleanField()
settled = serializers.DateTimeField(required=False, allow_null=True)
merchant = MerchantSerializer()
class TransactionSerializer(serializers.Serializer):
type = serializers.CharField(required=True, max_length=50)
data = DataSerializer()
【问题讨论】:
-
试试 allow_blank=True
-
allow_blank 不是日期时间字段的有效关键字参数
标签: django django-rest-framework