del db.sometable[something] requires that the id == something exists.
db(db.sometable.id == something).delete() instead returns the number of 
records deleted if there was any, otherwise it simply deletes nothing.

On Tuesday, November 6, 2012 8:14:33 PM UTC+1, Cliff Kachinske wrote:
>
> This code works.  Note the commented out line.
>
>     for v in form.vars:
>         if v[:7] == 'remove_' and form.vars[v] == 'on':
>             # del db.class_users[v[7:]]
>             db(db.class_users.id==v[7:]).delete()
>
>
> This code, which should be equivalent, raises the exception shown below.
>
>     for v in form.vars:
>         if v[:7] == 'remove_' and form.vars[v] == 'on':
>             del db.class_users[v[7:]]
>
>
> Traceback (most recent call last):
>   File "/home/cjk/w2p09/web2py/gluon/restricted.py", line 209, in restricted
>     exec ccode in environment
>   File 
> "/home/cjk/w2p09/web2py/applications/Training/controllers/class_users.py" 
> <http://localhost:8000/admin/default/edit/Training/controllers/class_users.py>,
>  line 371, in <module>
>   File "/home/cjk/w2p09/web2py/gluon/globals.py", line 186, in <lambda>
>     self._caller = lambda f: f()
>   File "/home/cjk/w2p09/web2py/gluon/tools.py", line 2809, in f
>     return action(*a, **b)
>   File 
> "/home/cjk/w2p09/web2py/applications/Training/controllers/class_users.py" 
> <http://localhost:8000/admin/default/edit/Training/controllers/class_users.py>,
>  line 165, in list_
>     if form.process(onvalidation=do_updates).accepted:
>   File "/home/cjk/w2p09/web2py/gluon/html.py", line 2108, in process
>     self.validate(**kwargs)
>   File "/home/cjk/w2p09/web2py/gluon/html.py", line 2055, in validate
>     if self.accepts(**kwargs):
>   File "/home/cjk/w2p09/web2py/gluon/html.py", line 1969, in accepts
>     onvalidation(self)
>   File 
> "/home/cjk/w2p09/web2py/applications/Training/controllers/class_users.py" 
> <http://localhost:8000/admin/default/edit/Training/controllers/class_users.py>,
>  line 134, in do_updates
>     del db.class_users[v[7:]]
>   File "/home/cjk/w2p09/web2py/gluon/dal.py", line 7691, in __delitem__
>     raise SyntaxError, 'No such record: %s' % key
> SyntaxError: No such record: 7
>
>

-- 



Reply via email to