Almost right, the problem is that you are appending 'MyVirtualFields' to the
Table after the Rows have been fetched.
you have two options:
1. define the virtuak fields in model
=in a model file==
db.define_table('input',
Field('value', 'integer'))
class MyVirtualFields(object):
def input_number(self):
return self.input.value
db.input.input_number.remove(MyVirtualFields())
2. In controller use the setvirtualfields method of Rows
==in a controller file==
records = db(db.input.id>0).select() # or any other query
records.setvirtualfields(virtual=MyVirtualFields())
2011/1/3 Rick <[email protected]>
> Thanks for the advice. I changed my code, but I don't know if I'm on
> the right track. Anyhow it doesn't work.
>
> ==in a model file==
> db.define_table('input',
> Field('value', 'integer'))
> class MyVirtualFields(object):
> def input_number(self):
> return self.input.value
>
> ==in a controller file==
> def create():
> records = db().select(db.day.ALL, orderby=db.day.thedate)
> form = SQLFORM(db.input, fields=['value'])
> db.day.virtualfields.append(MyVirtualFields())
> return dict(form = form)
> def deleterec():
> session.virtualfields.remove(MyVirtualFields())
> db.input.input_number.remove(MyVirtualFields())
> redirect(URL('create'))
>
> ==in create.html==
> {{for record in records:}}
> {{session.virtualfields=record.virtualfields}}
> {{=record.value}} : [ {{=A(("Delete this record"),
> _href=URL('deleterec'))}}
>
>
>
> >On Jan 2, 10:36 pm, Kenneth Lundström <[email protected]>
> wrote:
> > If you only want to display a number I guess virtual fields is what you
> > need. Look at
> >
> > http://www.web2py.com/book/default/chapter/06?search=virtual#Virtual-...
> >
> > Kenneth
> >
> >
> >
> >
> >
> >
> >
> > > Hi,
> > > In addition to the records that are submitted with a SQLFORM, I want
> > > to give each record a specific "identification" number, so that the
> > > first record has number=1 and so on:
> >
> > > ==from model/db.py==
> > > db.define_table('input',
> > > Field('number', 'integer'),
> > > Field('value', 'integer'))
> >
> > > ...My problem is that I don't know how to automatically add the number
> > > to this form:
> > > form = SQLFORM(db.input, fields=['value'])
> >
> > > Thanks in advance for help.
>
--
Bruno Rocha
http://about.me/rochacbruno/bio