我正在为Angular前端编写FlaskAPI,我的recipe类返回JSON和有关配方的所有信息,但我只需要返回一些有关配方列表的信息,以便更快地加载,并返回有关配方细节的所有信息
所以呢
@classmethod
def find_all(cls):
return cls.query.order_by(cls.time_added.desc()).all()
应该只返回带有id、name和description的JSON
以及
def find_by_id(cls, _id):
return cls.query.filter_by(id=_id).first()
应该返回包含配方所有信息的JSON
最好的解决办法是什么?两个不同的班级或者有什么好的方法吗
非常感谢你的帮助
我的配方型号:
class RecipeModel(db.Model):
__tablename__ = 'recipes'
# create recipe table
id = db.Column(db.Integer, primary_key=True, )
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
cuisine_id = db.Column(db.Integer, db.ForeignKey('cuisine.id'))
name = db.Column(db.String(150))
description = db.Column(db.Text)
image_path = db.Column(db.String(100))
total_time = db.Column(db.Integer)
prep_time = db.Column(db.Integer)
cook_time = db.Column(db.Integer)
level = db.Column(db.String(45))
source = db.Column(db.String(45))
rating = db.Column(db.DECIMAL(3, 2))
time_added = db.Column(db.Date)
def __init__(self, user_id, cuisine_id, name, description, image_path, total_time, prep_time, cook_time, level,
source, ):
self.user_id = user_id
self.cuisine_id = cuisine_id
self.name = name
self.description = description
self.image_path = image_path
self.total_time = total_time
self.prep_time = prep_time
self.cook_time = cook_time
self.level = level
self.source = source
# Return recipe as JSON object
def json(self):
return {
'id': self.id,
'name': self.name,
'cuisine_id': self.cuisine_id,
'description': self.description,
'image_path': self.image_path,
'total_time': self.total_time,
'prep_time': self.prep_time,
'cook_time': self.cook_time,
'level': self.level,
'source': self.source,
}
# Find recipe by ID
@classmethod
def find_by_id(cls, _id):
return cls.query.filter_by(id=_id).first()
# Find all recipes
@classmethod
def find_all(cls):
return cls.query.order_by(cls.time_added.desc()).all()
我的资源:
class RecipesList(Resource):
@classmethod
def get(cls):
return {'recipes': [recipes.json() for recipes in RecipeModel.find_all()]}
与其在模型上使用
.json()
,不如将序列化程序分为两个(或更多,视需要而定)函数来执行这两种不同的序列化(或者可以使用mode='detail'
或其他方法参数化单个序列化函数)相关问题 更多 >
编程相关推荐