使用web2py中的sqlform添加或减去整数db字段

时间:2015-01-08 15:14:56

标签: python web2py

我已经使用以下字段设置了db表:

db.define_table('balance', 
                Field('income', 'integer'),
                Field('income_description', "text"),
                Field('expenses', 'integer'),
                Field('expenses_discription', "text"),
                Field('loan', 'integer'),
                Field('loan_discription'))

然后使用以下形式的基本功能:

def index():
    form = SQLFORM(db.balance).process()
    if form.accepted:
        redirect(URL('data_display'))
        session.flash = 'Records Successfully Updated!'
    return locals()

每次输入和提交带有新整数的表格时,如何在收入,费用或贷款中添加新金额?

我希望在简单的Python中实现类似这样的东西:

储蓄=(收入 - 支出) - 贷款

因此,每次我输入收入或费用或贷款的新金额时,我都会添加该金额并更新数据库中的记录。

1 个答案:

答案 0 :(得分:0)

您需要使用的是Computed Field

>>> db.define_table('item',
        Field('unit_price','double'),
        Field('quantity','integer'),
        Field('total_price',
            compute=lambda r: r['unit_price']*r['quantity']))
>>> r = db.item.insert(unit_price=1.99, quantity=5)
>>> print r.total_price
9.95

在你的情况下,它会是这样的:

db.define_table('balance', 
    Field('income', 'integer'),
    Field('income_description', "text"),
    Field('expenses', 'integer'),
    Field('expenses_discription', "text"),
    Field('loan', 'integer'),
    Field('loan_discription')
    Field('savings', compute=lambda r: (r['income'] - r['expenses']) -r['loan'])
)