Я ищу способ построить JSON таким образом, используя Marshmallow в качестве сериализатора, я использую sqlalchemy с flask в python. Я не могу найти документацию по вложению запроса 'many'.
{
"result":[
{
"restaurant_id": "1",
"name": "Restaurant 1",
"open_hours" : {
"monday":"08.00-20.00",
"tuesday":"08.30-21.30",
}
},
{
"restaurant_id": "2",
"name": "Restaurant 2",
"open_hours" : {
"monday":"08.00-20.00",
"tuesday":"08.30-21.30",
}
}
}
Ниже приведен мой код для Models
class Business_Info(db.Model):
__tablename__ = 'business_info'
restaurant_id= db.Column(db.Integer, primary_key = True)
name = db.Column(db.String(255))
open_hours = db.relationship("Business_Hours", lazy=True)
class Business_Hours(db.Model):
__tablename__ = 'business_hours'
restaurant_id= db.Column(db.String(22), db.ForeignKey('business_info.restaurant_id'), primary_key = True)
Monday = db.Column(db.String(11))
Tuesday = db.Column(db.String(11))
Вот как я определил схема: -
class BusinessHoursSchema(Schema):
class Meta:
model = Business_Hours
fields = ('business_id', 'Monday', 'Tuesday')
class BusinessSchema(Schema):
class Meta:
model = Business_Info
fields = ('restaurant_id', 'name')
open_hours = fields.Nested(BusinessHoursSchema, many=True)
business_schema_many = BusinessSchema(many=True)
business_hours_schema = BusinessHoursSchema(many=True)
Вот как я запрашиваю результат: -
all_data = Business_Info.query.paginate(2, 10)
result = business_schema_many.dump(all_data.items)
И полученный результат выглядит так: -
{
"restaurant_id": "1",
"name": "Restaurant 1"
}
Но если я попытался перебрать элементы и вывести open_hours в business_hours_schema, он вернул сериализованные business_hours.
for item in all_data.items:
print(business_hours_schema.dump(item.open_hours))
Почему-то я не могу получить вложенные open_hours в результате, и мне нужна небольшая помощь с это.