如何在“烧瓶表”生成的表列中显示货币?

时间:2019-03-31 19:08:19

标签: python flask flask-sqlalchemy

flask-table确实具有几种特定的列类型。例如日期:DateCol。但是没有货币的列类型。因此,现在使用标准Col类型显示数据。现在,您只得到一个十进制。可以,但是我希望使用货币格式。

Table.py

# import things
from flask_table import Table, Col, DateCol

# Declare my table
class MyTable(Table):
    classes = ['table', 'table-hover']
    id = Col('id')
    amount = Col('amount')
    date = DateCol('date')

template.html

<div>{{ amounts_table }}</div>

routes.py

@route('/my_table')
def my_table():
    table_content = Amounts.query.all()
    amounts_table = AmountsTable(table_content)
    return render_template('template.html', amounts_table=amounts_table)

结果:

id     amount       date
1      1,523.78     30-03-2019

我想完成的事情:

id     amount       date
1      € 1.523,78   30-03-2019

1 个答案:

答案 0 :(得分:1)

您可以subclass the Col class

假设您的amount数据存储为字符串(例如1,523.78),则可以执行以下操作:

# Python 3.7

import locale

class CurrencyCol(Col):
    def td_format(self, content):
        amount = float(content.replace(',', ''))
        locale.setlocale(locale.LC_NUMERIC, 'nl_NL')
        val = locale.format_string('%.2f', float(amount), 1, 1).replace(' ', '.')
        return f'€ {val}'

然后更改表格以使用新的CurrencyCol

class MyTable(Table):
    classes = ['table', 'table-hover']
    id = Col('id')
    amount = CurrencyCol('amount')
    date = DateCol('date')