gpt4 book ai didi

python - 从关系属性访问列值

转载 作者:行者123 更新时间:2023-12-01 08:47:19 26 4
gpt4 key购买 nike

假设在以下示例中,我们有两个模型,每个模型都引用各自的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 %}

正如您所见,使用 sqlalchemy 关系检索第一列数据 pi.at_date 相对简单。生成的 jinja2 表显示 supplier_invoices 子表中的 at_date 以及父表中相应的 pi_lot_name 列数据 product_inventory 它所连接的表。

但是,此关系仅返回at_date列。

如何检索同一 model 中的 at_shortnumber 列,以便将其显示在 at_date 列旁边?

显然,一种解决方案是创建一个新的单独的 model 关系,但这对我来说似乎很麻烦,因为如果想检索 10 列,我们就必须建立 10 个单独的 模型关系。

有人对如何使用相同的模型从相关表中检索多列数据有任何建议吗?或者可能以完全不同的方式实现相同的结果?

提前谢谢您!

编辑:此外,如何将父模型类中的父名称分配给子列数据,以便可以直接从模型类操作数据?例如,如果希望使用:concat = column_property(pi_shortnumber + "_"+ pi_lot_name + "_"+ at_shortnumber )

最佳答案

您可以通过 pd.at_date.at_shortnumber 访问它。从您的代码 pq.at_date 返回核心 SupplierInvoicesat_date 值,这是正确的,它实际上做的是 pq.at_date。 at_date。但它与 supplier_invoices.at_date 共享名称,因此会造成困惑。更改 supplier_invoices.at_date 的列名称或 product_inventory.at_date 的关系名称。

关于python - 从关系属性访问列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53248323/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com