Thank you... It's rock.

I just add a check if fieldlable is different of None to not getting blank field name... ;-)

for fieldname in db.atable.fields:
    if labels[fieldname]!=None:
db.atable[fieldname].label = labels[fieldname] #.get('fieldname',fieldname)
    else:
        db.atable[fieldname].label = db.atable[fieldname].label

I don't know why the .get('fieldname',fieldname) was not working... I was getting fieldname doesn't exist.

Jonhy


On 2010-07-28 00:52, mdipierro wrote:
I would do:

db.define_table('label',Field('fieldname'),Field('fieldlabel'))
labels=dict((r.fieldname,r.fieldlabel) for r in
db().select(db.label.ALL,cache=(cache.ram,3600)))
...
define other table: atable
...
for fieldname in db.atable.fields:
      db.atable[fieldname].label = labels.get('fieldname',fieldname)

This will reduce the extra database access to a single query per hour
(3600). so no overhead.



On Jul 27, 2:18 pm, Jean-Guy<jean...@gmail.com>  wrote:
Hello,

I would like to use data dictionnary stored in database to define field
label and comment. The comment is used to provide help to users...

I am wondering what could have the smaller impact on database performance :

1) create a python dictionnary like this :

dictname = {fieldlablename:db().select()}

in it own model... Then use the dictname['fieldlablename'] key in :

db.define_table('atable',
      Field('field1'),
      Field('field2',label=dictname['fieldlablename']))

OR

2) Just :

db.define_table('atable',
      Field('field1'),
      Field('field2',label=db().select()))

I expect that my first choice will result in the reducing request to
database server and not overwrite the server database by database
queries each time a form is called by a controller function... Is that
correct?

Regards

Jonhy

Reply via email to