OK, I'm trying to create a generic controller function that will list the
rows in a table, representing each row using a flexible format that can be
user-defined (this is all for a plugin to provide a list-and-edit-records
widget).
My testing model includes this table definition:
db.define_table('npcs',
Field('name', 'string'),
Field('location', 'list:reference db.locations'),
Field('image', 'upload', uploadfolder = os.path.join(request.folder,
"static/images")),
Field('notes', 'text'),
format = '%(name)s')
db.npcs.id.represent = lambda id, row: row.name
db.npcs.location.requires = IS_IN_DB(db, 'locations.id',
db.locations._format, multiple = True)
db.npcs.location.widget = lambda field, value: AjaxSelect(field, value,
'locations', multi = 'basic').widget()
My controller then does a select() on the table and loops through the rows
(as rowlist):
listset = []
for r in rowlist:
listformat = r.id.represent
listset.append(listformat)
At present this code generates an error saying that the int object "id"
doesn't have a property 'represent'. I've just re-read the book on the
represent property and it actually says very little about its
implementation. I also can't find any explanation of how to pass a row to
the _format property. So help with either/both would be much appreciated.
Thanks,
Ian