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 <sababa.sab...@gmail.com>

> 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 <kenneth.t.lundst...@gmail.com>
> 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

Reply via email to