代码之家  ›  专栏  ›  技术社区  ›  Alex B

从列访问属性值的关系

  •  1
  • Alex B  · 技术社区  · 6 年前

    models 每个都指各自的 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 模板以显示 query

    {% 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 %}
    

    pi.at_date 使用 sqlalchemy 关系相对简单。结果 金甲2号 at_date supplier_invoices pi_lot_name 来自父级的列数据 product_inventory 与之连接的表。

    但是, relationship 只返回 专栏。

    at_shortnumber 同一列中的列 model 在某日

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

    对于如何使用相同的方法从相关表中检索多个列的数据,有人有什么建议吗 ? 或者可能是以完全不同的方式实现相同的结果?

    提前谢谢你!

    concat = column_property(pi_shortnumber + "_" + pi_lot_name + "_" + at_shortnumber )

    1 回复  |  直到 6 年前
        1
  •  1
  •   simanacci    6 年前

    pd.at_date.at_shortnumber . 从你的代码 pq.at_date 返回 at_date 堆芯的价值 SupplierInvoices pq.at_date.at_date supplier_invoices.at_date 因此产生了混乱。或者更改 供应商发票日期 或的关系名称 product_inventory.at_date .