I've run into a basic problem that I can't seem to figure out:

db.define_table('A', Field('name'), format='%(name)s')
db.define_table(
    'B',
    Field('number'),
    Field('name', db.A,
          requires=IS_EMPTY_OR(IS_IN_DB(db.A,'A.id','%(name)s')))
    )

All I want to do is allow db.B.name to be empty. As far as I can tell
the requires= for db.B.name is the accepted way to do this - if I
leave it out, SQLFORM validation will throw an error. But trying to
insert a record into db.B using SQLFORM raises this ticket:

Traceback (most recent call last):
  File "/home/rree/web2py-1.99.4/gluon/restricted.py", line 204, in
restricted
    exec ccode in environment
  File "/home/rree/web2py-1.99.4/applications/welcome/controllers/
appadmin.py", line 433, in <module>
  File "/home/rree/web2py-1.99.4/gluon/globals.py", line 172, in
<lambda>
    self._caller = lambda f: f()
  File "/home/rree/web2py-1.99.4/applications/welcome/controllers/
appadmin.py", line 127, in insert
    form = SQLFORM(db[table], ignore_rw=ignore_rw)
  File "/home/rree/web2py-1.99.4/gluon/sqlhtml.py", line 862, in
__init__
    inp = self.widgets.options.widget(field, default)
  File "/home/rree/web2py-1.99.4/gluon/sqlhtml.py", line 215, in
widget
    options = requires[0].options()
  File "/home/rree/web2py-1.99.4/gluon/validators.py", line 2453, in
_options
    options = self.other.options()
  File "/home/rree/web2py-1.99.4/gluon/validators.py", line 460, in
options
    self.build_set()
  File "/home/rree/web2py-1.99.4/gluon/validators.py", line 443, in
build_set
    fields = [self.dbset.db[self.ktable][k] for k in self.fields]
  File "/home/rree/web2py-1.99.4/gluon/dal.py", line 5542, in
__getattr__
    return self[key]
  File "/home/rree/web2py-1.99.4/gluon/dal.py", line 5482, in
__getitem__
    return dict.__getitem__(self, str(key))
KeyError: 'db'

Am I missing something?

Thanks
-Rick

Reply via email to