![](/img/trans.png)
[英]Configuring Flask-SQLAlchemy to use multiple databases with Flask-Restless
[英]Flask-SQLAlchemy and Flask-Restless not fetching grandchildren
我正在Flask,Flask-SQLAlchemy和Flask-Restless上构建应用程序。 我已经使用躁动不安为父子孙子关系*生成API。 我孩子的GET将正确地获取孙子,但父母的GET不会为每个孩子获取孙子。
*实际上,亲子关系是多对多的,但前提相同。
class Grandchild(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String, nullable=False)
parent = db.relationship('Child', backref='grandchild')
parent_child = db.Table('parent_child',
db.Column('parent_id', db.Integer, db.ForeignKey('parent.id')),
db.Column('child_id', db.Integer, db.ForeignKey('child.id')),
db.Column('number', db.SmallInteger)
)
class Child(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String, nullable=False)
grandchild_id = db.Column(db.Integer, db.ForeignKey('grandchild.id'), nullable=False)
class Parent(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String, nullable=False)
children = db.relationship('Child', secondary=parent_child)
api.create_api(Child, exclude_columns=['grandchild_id'])
api.create_api(Parent)
{
"num_results": 1,
"objects": [
{
"id": 1,
"name": "test"
"grandchild": {
"id": 1,
"name": "test"
}
}
],
"page": 1,
"total_pages": 1
}
{
"num_results": 1,
"objects": [
{
"children": [
{
"id": 1,
"name": "test",
"grandchild_id": 1
}
],
"id": 1,
"name": "test"
}],
"page": 1,
"total_pages": 1
}
后处理器可用于获取孙子代。
def parent_post_get_many(result=None, search_params=None, **kw):
for object in result['objects']:
for child in object['children']:
grandchild = Grandchild.query.get(child['grand_child_id'])
child.update({'grandchild': grandchild})
api.create_api(Parent, postprocessors={'GET_MANY': [parent_post_get_many]})
在看了几个小时后,我将给出目前最好的答案。 我尝试了多种方法,但仍无法获得成功渲染孙子的任何信息,因此我转向了烧瓶不安问题追踪器,以期能找到我能找到的东西:
https://github.com/jfinkels/flask-restless/pull/222#issuecomment-31326359和@jfinkels响应似乎表明您目前无法在烧瓶不动中实现所需的功能。
假设我对问题状态的评估是正确的,那么您可能想研究围绕此问题的设计,或者使用其他程序包来服务您的API(也许Flask-restful,尽管我承认我没有使用过,但是不知道是否合适)。
FWIW,我一直在使用Flask-Classy为我正在从事的项目构建json API。 这个过程比我怀疑的要复杂得多,但是它也具有足够的自由度,可以更好地控制使用哪些查询以及如何序列化结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.