1
因此,我worte Web2py中的功能创建一个条件下的数据库中的表中的记录,但Web2py创建记录allthough条件未填充,Web2py CRUD.read()记录虽然没有填充条件创建
这里是它的sepposed功能
def buy_product():
price = price_set(db,auth,'product')
balance = limit(db,auth,'settings','account_balance')
if balance !=None:
if balance < price:
form=redirect(URL('order'))
else:
form=crud.create(db.letter)
if form.accepts(request.vars, session):
tax = float(postage(form.vars.tax_type).replace("-","."))
##########################
# I'm talking about this #
##########################
if balance < (price + tax):
response.flash='You don\'t have enough balance to buy this product'
redirect(URL('not_processed'))
else:
function_1(....)
...
...
update_field(db,auth,'settings','account_balance',-price)
response.flash='Done'
redirect(URL('products'))
pass
elif form.errors:
response.flash='Error 01'
else:
pass
###############################
else:
form=redirect(URL('settings'))
return dict(form=form)
当Balance < price + tax
用户应该被重定向到not_processed
没有在数据库中创建新的记录。
但web2py的用户重定向到not_processed
和不执行这一部分从用户输入的信息来创建记录。所以用户看到他买了东西,当它没有处理时(见下)
function_1(....)
...
...
update_field(db,auth,'settings','account_balance',-price)
response.flash='Done'
redirect(URL('products'))
pass
任何想法?
谢谢
你应该也可以这样做: ''form = crud.create(db.letter,onvalidation = myvalidationfunction)'' SQLFORM和crud都接受失效参数。我相信,你可以检查额外的条件,如果这些条件不使用''form.errors.field =“不能做”'' 我只提到它,因为你可能不希望对所有单个onvalidation功能满足添加错误CRUD,你可以有一个很好的理由使用CRUD超过SQLFORM(SQLFORM还接受onvalidation参数)。 见:http://web2py.com/books/default/chapter/29/7#onvalidation 更多 –
Kasapo