Not in web2py. Perhaps in the code you are running? $ grep '%(first_name)' gluon/*.py gluon/tools.py: user_identifier = '%(first_name)s' gluon/tools.py: return '%(first_name)s %(last_name)s' % user gluon/tools.py: format='%(first_name)s %(last_name)s (%(id)s)'))
On Tuesday, 11 September 2012 13:14:11 UTC-5, mweissen wrote: > > I wanted to see a row of a table and I started the database administration > tool. I get the following snapshot. There is a trailing "%", but no "s" - > why? > self.label '%(last_name)s %(first_name)%' > Error snapshot [image: help] > > <type 'exceptions.KeyError'>('first_name') > > inspect attributes > Frames > > - > > *File D:\dropbox\InfoSMS\web2py\gluon\restricted.py in restricted at > line 209* code arguments variables > - > > *File > D:\dropbox\InfoSMS\web2py\applications\secure\controllers\appadmin.py in > <module> at line 441* code arguments variables > - > > *File D:\dropbox\InfoSMS\web2py\gluon\globals.py in <lambda> at line > 185* code arguments variables > - > > *File > D:\dropbox\InfoSMS\web2py\applications\secure\controllers\appadmin.py in > update at line 283* code arguments variables > - > > *File D:\dropbox\InfoSMS\web2py\gluon\sqlhtml.py in __init__ at line > 1015* code arguments variables > - > > *File D:\dropbox\InfoSMS\web2py\gluon\sqlhtml.py in widget at line 227* > code arguments variables > - > > *File D:\dropbox\InfoSMS\web2py\gluon\validators.py in _options at > line 2480* code arguments variables > - > > *File D:\dropbox\InfoSMS\web2py\gluon\validators.py in options at line > 479* code arguments variables > - > > *File D:\dropbox\InfoSMS\web2py\gluon\validators.py in build_set at > line 474* code arguments variables > Function argument list > > (self=<gluon.validators.IS_IN_DB object>) > Code listing > > 469. > 470. > 471. > 472. > 473. > 474. > > 475. > 476. > 477. > 478. > > reduce(lambda a,b:a|b,(f for f in fields if not > f.name=='id')) > > > dd = dict(orderby=orderby, cache=self.cache) > > > records = self.dbset(table).select(table.ALL, **dd) > > > self.theset = [str(r[self.kfield]) for r in records] > > > if isinstance(self.label,str): > > self.labels = [self.label % dict(r) for r in records] > > > else: > self.labels = [self.label(r) for r in records] > > > def options(self, zero=True): > > Variables self.labels undefined self <gluon.validators.IS_IN_DB > object> records <Rows (897)> r <Row {'sprechtag_wunsch': <Set > (sprechtag_wunsch... <gluon.dal.RecordDeleter object at 0x09DB2350>}> > self.label '%(last_name)s %(first_name)%' builtindict <type 'dict'> > > Context > > Regards, Martin > --