это снова я, теперь с вопросом о зефире, у меня следующая структура:
route.py
@models.response(ParentSchema())
def get(args, model_id):
return {"response": {"a": [{"data": "a"}], "b": [{"data": "a"}], "c": [{"data": "a"}], "d": [{"data": "a"}]}}
тогда это мой файл схем schema.py
class SubChildSchema(Schema):
data = fields.Str(description="Model's name")
class ChildSchema(Schema):
class Meta:
ordered = True
a = fields.Nested(SubChildSchema, many=True)
b = fields.Nested(SubChildSchema, many=True)
c = fields.Nested(SubChildSchema, many=True)
d = fields.Nested(SubChildSchema, many=True)
class ParentSchema(Schema):
response = fields.Nested(ChildSchema)
предполагается, что в ответ я должен получить отсортированный ответ, например:
{
"response": {
"a": [
{
"data": "a"
}
],
"b": [
{
"data": "a"
}
],
"c": [
{
"data": "a"
}
],
"d": [
{
"data": "a"
}
]
}
}
но вместо этого я получаю
{
"response": {
"b": [
{
"data": "a"
}
],
"c": [
{
"data": "a"
}
],
"d": [
{
"data": "a"
}
],
"a": [
{
"data": "a"
}
]
}
}
похоже, что свойство order = True в классе ChildSchema не работает. Я искал это в некоторых сообщениях, и похоже, что проблема возникает, когда вы смешиваете вложенные поля и упорядоченное свойство.
Это мой стек
flask-marshmallow==0.14.0
marshmallow==2.21.0
marshmallow-sqlalchemy==0.23.1