【发布时间】:2019-11-10 14:28:37
【问题描述】:
我在 Flask-Sqlalchemy 中创建了两个模型。这些模型是Tickets 和Namespace。两种模型都使用外键连接。我还创建了 marshmallow-sqlalchemy ModelSchema 定义以在 RESTful API 中使用。
class Ticket(db.Model):
id = db.Column(db.Integer, primary_key=True)
namespace = db.Column(
db.Integer, db.ForeignKey('namespace.id'), nullable=False)
title = db.Column(db.String)
description = db.Column(db.Text)
status = db.Column(db.String)
severity = db.Column(db.String)
class TicketSchema(ma.ModelSchema):
class Meta:
model = Ticket
include_fk = True
class Namespace(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String)
class NamespaceSchema(ma.ModelSchema):
class Meta:
model = Namespace
在我看来,我正在尝试按给定的命名空间过滤所有票证。这是我的查询:
@app.route("/<string:name>", methods=["GET"])
def get_tickets_by_namespace(name):
tickets_query = Ticket.query.join(Namespace).filter(Namespace.name == name)
result = TicketSchema(many=True).dump(tickets_query).data
return jsonify({"tickets": result})
如何在加入和过滤两个模型时从Namespace 模型访问name 属性?
当我使用/aa输入上面的URL时,我只得到namespace_id,我还想看看命名空间的名称:
{
"tickets": [
{
"description": "xcv",
"id": 1,
"namespace": 1,
"severity": "xcvbn",
"status": "xcvb",
"title": "xc"
},
{
"description": "xcv",
"id": 3,
"namespace": 1,
"severity": "xcvbnb",
"status": "axcvb",
"title": "axcb"
},
{
"description": "xcv",
"id": 4,
"namespace": 1,
"severity": "bnb",
"status": "axcvb",
"title": "aaaxcb"
}
]
}
【问题讨论】:
-
请don' use images of code, data or errors。将它们发布为 text,以便我们可以尝试重现问题而无需重新输入所有内容,并且屏幕阅读器可以正确索引或阅读您的问题。
-
清除,谢谢,对这个问题深表歉意。
标签: python flask sqlalchemy flask-sqlalchemy marshmallow