Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask SqlAlchemy Join只返回一个ID值_Python_Postgresql_Flask_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

Python Flask SqlAlchemy Join只返回一个ID值

Python Flask SqlAlchemy Join只返回一个ID值,python,postgresql,flask,sqlalchemy,flask-sqlalchemy,Python,Postgresql,Flask,Sqlalchemy,Flask Sqlalchemy,Join只返回一个ID值,而不是实际数据 关系:1对多=客户:付款历史记录 问题: PaymentHistory属性仅为PaymentHistory的ID 1、2、3 预期结果: 付款历史记录必须包含实际数据,而不是ID值 client_model.py 类客户端(db.Model): id=db.Column(db.Integer,主键=True) 未决金额=db.Column(db.Integer,nullable=False) 发票=数据库关系('Invoice',backref='cli

Join只返回一个ID值,而不是实际数据

关系:1对多=客户:付款历史记录

问题: PaymentHistory属性仅为PaymentHistory的ID 1、2、3

预期结果: 付款历史记录必须包含实际数据,而不是ID值

client_model.py

类客户端(db.Model):
id=db.Column(db.Integer,主键=True)
未决金额=db.Column(db.Integer,nullable=False)
发票=数据库关系('Invoice',backref='client',lazy='select')
付款历史=数据库关系('PaymentHistory',
backref='client',
懒惰(选择)
付款历史记录.py

class PaymentHistory(数据库模型):
id=db.Column(db.Integer,主键=True)
付款方式=db.Column(db.String(100),可空=False)
amount=db.Column(db.Integer,nullable=False)
client_id=db.Column(db.Integer,
db.ForeignKey('client.id'),
可空=假)
route_handler.py

@client\u blueprint.route('/get\u all',methods=['POST'])
def get_all():
cli=db.session.query(Client.join(PaymentHistory).all()
clients=ClientSchema(many=True).dump(cli).data
返回jsonify({'clients':clients})
client_schema.py

类ClientSchema(ma.ModelSchema):
类元:
模型=客户端
输出

{
“客户”:[
{
“创建时间”:“2019-06-14T02:12:08.038526+00:00”,
“id”:1,
“发票”:[],
“付款历史记录”:[
1, 2, 3
],
“待定金额”:0,
“更新位置”:空
}
]
}

使用而不是
join()
?db.session.query(Client.options)(joinedload(Client.payment_history)).all()返回相同的结果。这与
ClientSchema
的定义方式有关。@IljaEverilä我刚刚在输出部分之前添加了查找ClientSchema。我在这里使用的是Flask棉花糖序列化程序。使用而不是
join()
?db.session.query(Client).options(joinedload(Client.payment_history)).all()返回相同的结果。这与
ClientSchema
的定义方式密切相关。@IljaEverilä我刚刚在输出部分之前添加了查找ClientSchema。我在这里使用的是Flask棉花糖序列化程序。