首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python棉花糖采取fields.Int()或fields.Str()

python棉花糖采取fields.Int()或fields.Str()
EN

Stack Overflow用户
提问于 2018-12-06 18:23:08
回答 1查看 4.7K关注 0票数 1

我从另一个源接收数据,有时发送int,有时发送给定变量的字符串: location。例如,他们将1,2,或3,或他们将发送“建筑”或“汽车”或“公共汽车”作为一个例子。

我试过了

代码语言:javascript
复制
location = fields.Int(allow_string=True, strict=False)

,这将产生以下错误

marshmallow.exceptions.ValidationError:{'status':‘非有效整数。’}

代码语言:javascript
复制
location = fields.Str(allow_int=True, strict=False)

,这将产生以下错误

marshmallow.exceptions.ValidationError:{“状态”:“无效字符串。”}

但两者都不适用于这两种类型。有没有一种方法可以接受这两种类型:字符串和ints?

EN

回答 1

Stack Overflow用户

发布于 2020-06-09 16:11:09

棉花糖fields.Number ( fields.Integerfields.Floatfield.Decimal继承的)将很高兴地接受有效的“可转换”字符串。

这意味着您可以随意地将一个整数或字符串传递给它们,而无需发出任何问题。但是,如果转换失败,您将面临异常。

代码语言:javascript
复制
class MySchema(Schema):
     foo = fields.Integer()

MySchema().load({"foo": "123"})
# prints {"foo": 123}

MySchema().load({"foo": 456})
# prints {"foo": 456}

MySchema().load({"foo": "bar"})
# marshmallow.exceptions.ValidationError: {'foo': ['Not a valid integer.']}

相反,fields.String将不接受任何整数。

代码语言:javascript
复制
class MySchema(Schema):
     foo = fields.Integer()

MySchema().load({"foo": "bar"})
# prints {"foo": "bar}

MySchema().load({"foo": 123})
# marshmallow.exceptions.ValidationError: {'foo': ['Not a valid string.']}

如果输入是整数或包含整数的字符串,则可以使用fields.Integer解析它们。

如果这是更随意的东西,您需要使用@ something提到的自定义字段,并定制_deserialize_serialize来处理您的数据。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53657543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档