Я использую Flask, Flask-SqlAlchemy, Flask-Marshmallow и Marshmallow-SqlAlchemy среди других сред для создания приложения. У меня есть, например, следующие классы модели и схемы. Мне нужно отказаться от определенных полей для сериализации в JSON. Как мне этого добиться?
Модель:
class AsmStore(Model):
__tablename__ = "asmstore"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(255))
storelatitude = db.Column(db.String(255))
storelongitude = db.Column(db.String(255))
territoryid = db.Column(
db.Integer, db.ForeignKey("territory.id"), nullable=False
)
Класс схемы:
class AsmStoreSchema(ma.ModelSchema):
class Meta:
model = AsmStore
Я провел небольшой поиск и попробовал следующее, но при таком подходе сериализация не работает, если, скажем, AsmStoreSchema вложена в другой класс схемы.
class AsmStoreSchema(ma.Schema):
class Meta:
fields = ("storelatitude", "storelongitude")
Я попробовал это сегодня, и это сработало. Хотя будет хорошо, если это можно будет подтвердить, это правильный подход.
Наряду с наследованием от ModelSchema и указанием модели в мета-классе я также указал поля для сериализации. Вот несколько примеров:
class AsmStoreSchema(ma.ModelSchema):
class Meta:
model = AsmStore
fields = ("storelatitude", "storelongitude")
class TerritorySchema(ma.ModelSchema):
class Meta:
model = Territory
fields = ("id", "centrallatitude", "storelist")