Python 从关系属性访问列值
假设以下示例中有两个Python 从关系属性访问列值,python,python-3.x,flask,jinja2,flask-sqlalchemy,Python,Python 3.x,Flask,Jinja2,Flask Sqlalchemy,假设以下示例中有两个模型,每个模型都引用各自的sqlite表: class supplier_invoices(db.Model): id = db.Column('id', db.Integer, primary_key = True) at_date = db.Column(db.String(100)) at_shortnumber = db.Column(db.String(100)) def __repr__(self): return
模型
,每个模型都引用各自的sqlite
表:
class supplier_invoices(db.Model):
id = db.Column('id', db.Integer, primary_key = True)
at_date = db.Column(db.String(100))
at_shortnumber = db.Column(db.String(100))
def __repr__(self):
return str(self.at_date)
class product_inventory(db.Model):
id = db.Column('id', db.Integer, primary_key = True)
pi_shortnumber = db.Column(db.String(100))
pi_lot_name = db.Column(db.String(100))
pi_at_id = db.Column(db.Integer, db.ForeignKey('supplier_invoices.id'),
nullable=False)
at_date = relationship("supplier_invoices")
def __init__(self, id, pi_shortnumber):
self.id = id
self.pi_shortnumber = pi_shortnumber
@app.route('/pro_inv/')
def product_inv():
return render_template('product_inventory.html',
product_query = product_inventory.query.order_by(product_inventory.pi_shortnumber.desc()).limit(20).all())
然后假设我们使用以下jinja2
模板以表格形式显示查询
:
{% for pq in product_query %}
<tr>
<td>
{{ pi.at_date }}
</td>
<td>
{{ pi.pi_lot_name }}
</td>
<td>
{{ <!-- at_shortnumber --> }} <!-- ******* HOW TO GET SECOND COLUMN DATA HERE? -->
</td>
<td>
</tr>
{% endfor %}
{%用于产品中的pq_query%}
{{pi.at_date}
{{pi.pi_lot_name}
{{ }}
{%endfor%}
正如您所看到的,使用sqlalchemy
关系检索第一列数据pi.at_date
,相对简单。生成的jinja2
表显示了supplier\u invoices
子表中的at\u date
,以及与之关联的父product\u inventory
表中相应的pi\u批号
列数据
但是,此关系
仅返回在日期
列
如何检索同一模型中的at_shortnumber
列,以便在at_date
列旁边显示它
显然,一个解决方案是创建一个新的独立的模型
关系,但这对我来说似乎很麻烦,因为如果要检索10列,我们必须建立10个独立的模型
关系
对于如何使用相同的模型
从相关表中检索多列数据,有人有什么建议吗?或者可能是以完全不同的方式实现相同的结果
提前谢谢你
编辑:此外,如何将父模型类中的父名称指定给子列数据,以便直接从模型类操作数据?例如,如果希望使用:concat=column\u属性(pi\u shortnumber+“\u”+pi\u lot\u name+“\u”+at\u shortnumber)
您可以作为pd.at\u date.at\u shortnumber
访问它。从您的代码pq.at\u date
返回at\u date
corespondingSupplierInvoices
的值。这是正确的,它实际执行的是pq.at\u date.at\u date
。但是你有它与供应商发票共享名称。在日期,因此混淆。更改供应商发票的列名称。日期
或产品库存的关系名称。日期
Thx!此外,如果你能帮助我编辑以上,将非常感谢。