Мне нужен столбец total
в моей модели sqlalchemy, равный amount * price
.Доступ к значению столбца можно получить по object.total
, но имя столбца не отображается в model.__table__.columns.keys()
. Я попытался установить итоговые значения как hybrid_property и column_property.Ни один из них не работает для включения столбца при доступе к столбцам.
Это моя модель:
class RawMaterials(db.Model):
__tablename__ = 'raw_materials'
id = db.Column(db.Integer, primary_key=True)
type = db.Column(db.String(64))
product = db.Column(db.String(64))
amount = db.Column(db.Integer)
price = db.Column(db.Integer)
total = column_property(amount * price)
def __repr__(self):
return '<id:{} product:{}>'.format(self.id, self.product)
, и здесь я запрашиваю модель для столбцов:
@app.route('/tables')
@login_required
def tables(methods=["GET", "POST"]):
if request.args.get('data'):
table = request.args.get('data').lower().replace(" ","_")
else:
table = 'raw_materials'
database = get_db_model(table)
materials = database.query.all()
columns = database.__table__.columns.keys()
new_mats = format_data(materials, columns)
title = table.replace("_", " ").upper()
return render_template('tables.html.j2', title=title, materials=materials, columns=columns)
Если я распечатаю переменную columns
в консоли, она возвращает: ['id', 'type', 'product', 'amount', 'price']
, и я хочу, чтобы она вернула: ['id', 'type', 'product', 'amount', 'price', 'total']
Я ожидаю, что общее значение будет в столбцах, но это не так.