Roy*_*Kuo 4 python flask flask-sqlalchemy flask-restplus
我刚刚开始使用flask-restplus进行开发,而且我不是母语人士,
但我会尽量清楚地描述我的问题。
我知道flask中有一个fields
模块可以帮助我们定义和过滤响应数据类型,
如字符串、整数、列表等。
使用 fields 模块时有什么方法可以允许 NULL / None 吗?
以下是我使用字段模块捕获值的代码,
add_group = api.model(
"add_group",
{"team_groups": fields.List(fields.Nested(api.model("team_groups", {
"name": fields.String(example="chicago bulls", description="name of add group"),
"display_name": fields.String(example="bulls", description="display name of add group")})))})
Run Code Online (Sandbox Code Playgroud)
如果数据类型display_name
不是String,则会出现以下错误,
{
"errors": {
"team_groups.0.display_name": "123 is not of type 'string'"
},
"message": "Input payload validation failed"
}
Run Code Online (Sandbox Code Playgroud)
我想要的是在输入display_name时,我可以输入bulls
或None
我的问题,但最终转换为非空值来解决问题。
如果我的问题的任何部分不太清楚,
请告诉我,谢谢。
以下是我的开发环境:
flask-restplus 0.13.0
Python 3.7.4
postman 7.18.1
以下是我更新的代码:
add_group = api.model(
"add_group",
{"team_groups": fields.List(fields.Nested(api.model("team_groups", {
"name": fields.String(example="chicago bulls", description="name of add group"),
"display_name": fields.String(example="bulls", description="display name of add group")})))})
Run Code Online (Sandbox Code Playgroud)
如果我输入以下有效负载:(由邮递员提供)
{
"team_groups": [
{
"name": "chicago bulls",
"display_name": null
}
]
}
Run Code Online (Sandbox Code Playgroud)
它仍然返回:
{
"errors": {
"team_groups.0.display_name": "None is not of type 'string'"
},
"message": "Input payload validation failed"
}
Run Code Online (Sandbox Code Playgroud)
是的,您可以创建一个子类并使用它而不是默认的,它也将接受 None
class NullableString(fields.String):
__schema_type__ = ['string', 'null']
__schema_example__ = 'nullable string'
Run Code Online (Sandbox Code Playgroud)
所以你的代码看起来像
{ "property": NullableString(attribute=value)}
Run Code Online (Sandbox Code Playgroud)
此外,您可以访问问题github.com/noirbizarre/flask-restplus/issues/179
归档时间: |
|
查看次数: |
2219 次 |
最近记录: |