Я только начинаю разработку с flask -restplus, и я не являюсь носителем языка,
, но я постараюсь описать свой вопрос настолько ясно, насколько смогу.
Я знаю, что в flask есть модуль fields
, который помогает нам определять и фильтровать тип данных ответа,
, такой как String, Integer, List и т. Д.
Есть ли способ разрешить NULL / None при использовании модуля fields?
Ниже приведен мой код, который использует модуль field для перехвата значения,
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")})))})
и если тип данных display_name
не является строкой, возникнет следующая ошибка:
{
"errors": {
"team_groups.0.display_name": "123 is not of type 'string'"
},
"message": "Input payload validation failed"
}
, что мне нужно при вводе display_name, я могу ввести bulls
или None
Кажется, можно найти только несколько справочных данных / вопросов, и я нашел только один результат , связанный
с моим вопросом , но в конечном итоге преобразуется в ненулевое значение для решения проблемы.
, если есть какая-то часть моего вопроса, не очень понятная,
пожалуйста, дайте мне знать, спасибо.
мое окружение для разработки:
flask-restplus 0.13.0
Python 3.7.4
postman 7.18.1
Вот мой обновленный код:
from flask_restplus import Namespace, fields
class NullableString(fields.String):
__schema_type__ = ['string', 'null']
__schema_example__ = 'nullable string'
class DeviceGroupDto:
api = Namespace("device/group", description="device groups")
header = api.parser().add_argument("Authorization", location="headers", help="Bearer ")
get_detail_group = api.model(
"getdetail",
{"team_groups": fields.List(fields.String(required=True,
description="team group id to get detail", example=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": NullableString(attribute='a')})))})
, если я введу следующую полезную нагрузку: (почтальоном)
{
"team_groups": [
{
"name": "chicago bulls",
"display_name": null
}
]
}
Он по-прежнему возвращает:
{
"errors": {
"team_groups.0.display_name": "None is not of type 'string'"
},
"message": "Input payload validation failed"
}