Предположим, что в следующем примере у нас есть два 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
относительно просто. Результирующая таблица jinja2
отображает at_date
из дочерней таблицы supplier_invoices
вместе с соответствующими данными столбца pi_lot_name
из родительской таблицы product_inventory
, с которой она соединена.
Однако этот relationship
возвращает только столбец at_date
.
Как можно получить столбец at_shortnumber
в том же model
, чтобы отобразить его вдоль столбца at_date
?
Очевидно, что одним из решений было бы создание новых отдельных отношений model
, но мне это кажется обременительным, поскольку, если кто-то хочет получить, скажем, 10 столбцов, нам нужно будет установить 10 отдельных model
отношений.
Есть ли у кого-нибудь предложения относительно того, как извлечь данные из нескольких столбцов из связанной таблицы, используя один и тот же model
? Или, возможно, совершенно другой способ достижения того же результата?
Заранее спасибо!
edit: дополнительно, как можно назначить родительское имя в родительском классе модели для данных дочернего столбца, чтобы можно было манипулировать данными непосредственно из класса модели? Например, если вы хотите использовать: concat = column_property(pi_shortnumber + "_" + pi_lot_name + "_" + at_shortnumber )