2014-09-02 30 views
0
SQLFORM的領域

我的表:如何動態地獲取web2py的

db.define_table('problem', 
       Field('title','string',unique=True,length=255), 
       Field('description','text',notnull=False,default=''), 
       Field('in_date','datetime',notnull=False,default=request.now), 
       Field('input','text',notnull=False,default=''), 
       Field('result','text',notnull=False,default=''), 
       Field('defresult','text',notnull=False), 
       Field('submit','integer',notnull=False,default=0), 
       Field('solved','integer',notnull=False,default=0), 
       Field('pass_rate','decimal(2,2)',notnull=True,default =0.00), 
       format = '%(title)s') 

中插入記錄的問題表由SQLFORM,如何獲得的問題,結果場SQLFORM動態。

def test(): 
    user_id=_get_user_id(auth) 
    id=request.args(0,cast=int) 
    for row in db(db.belongs.id==id).select(): 
     taskid=row.task_id 
     problemid=row.problem_id 
    record=db.problem(problemid) or redirect(URL('index')) 
    fields=['title','description','input','result'] 
    form=SQLFORM(db.problem,record,readonly=False,fields=fields) 
    if form.process().accepted: 
      db(db.problem.id==problemid).update(submit=db.problem.submit+1) 
      if(form.vars.result==db.problem.defresult): 

最後一行我想如果判斷結果字段等於defresult領域。 即使我輸入另一個值到sqlform中,form.vars.result似乎也不會改變,插入前的值在我重新加載頁面後填充了sqlform。如何清除sqlform?謝謝!

回答

1

form.vars.result確實包含新值。問題是在form.vars.result==db.problem.defresult中,您正在將該值與Field對象進行比較,而不是記錄中的實際值。此前,您有:

record=db.problem(problemid) 

所以,你平等的測試應該是:

if form.vars.result == record.defresult: 
+0

非常感謝你! – Jian 2014-09-03 00:58:07