【发布时间】:2019-11-27 17:02:48
【问题描述】:
我无法让 flask-restful marshal_with 函数做我想做的事。基本上我有 4 个端点来访问两个分层实体(父母和孩子)。
class Parent(db.Model):
name = db.Column(db.String, primary_key=True)
children = db.relationship(Child)
class Child(db.Model):
name = db.Column(db.String, primary_key=True)
parent = db.Column(db.String, db.ForeignKey('parents.name'))
父资源:
parent_marshal_template = {
'name': fields.String,
'children': fields.Url('children-endpoint', attribute='name')
}
class Parents(Resource): # /parents
@marshal_with(parent_marshal_template)
def get(self):
return list_of_parents
class Parent(Resource): # /parents/<str:name> (parent-endpoint)
@marshal_with(parent_marshal_template)
def get(self, name):
return single_parent_with_name
儿童资源:
child_marshal_template = {
'name': fields.String,
'parent': fields.Url('parent-endpoint', attribute='name')
}
class Children(Resource): # /parents/<str:parent>/children (children-endpoint)
@marshal_with(child_marshal_template)
def get(self, parent):
return list_of_children_of_parent
class Child(Resource): # /parents/<str:parent>/children/<str:name>
@marshal_with(child_marshal_template)
def get(self, parent, name):
return single_child_with_name
parent_marshal_template 应该返回 URL 以获取此父项的所有子项以获取“子项”键。 child_marshal_template 应该将 URL 返回到其父键的“父”键。两者都抛出错误,说我忘记指定值。我怎样才能让它发挥作用?
【问题讨论】:
标签: python flask flask-restful