Hi Nathan
Just a small point, I tried your code example and it seems you have to
set id==None otherwise it tries to add a duplicate row with the same
id.
Anyway, I thought you also might like this alternative using
_filter_fields, just because it's shorter. Maybe it's got other
issues, but it seems to work!
def things():
form = SQLFORM(db.things)
if form.accepts(request.vars,session):
response.flash = 'Added a thing'
if request.vars.dupe:
db.things.insert(**db.things._filter_fields(db.things(request.vars.dupe)))
things = db(db.things.id>0).select()
return dict(form=form,things=things)
Best regards,
-D
On Dec 4, 3:30 am, "mr.freeze" <[email protected]> wrote:
> Here is an example:
>
> Model
> -----
> db.define_table('things',Field('name',requires=IS_NOT_EMPTY()),
> Field('age','integer'),Field('weight','double'))
> db.things.id.represent = lambda v: A(v,_href=URL(vars=dict(dupe=v)),
> _onclick='return confirm("Copy
> %s?")' % v)
>
> Controller
> ----------
> def index():
> form = SQLFORM(db.things)
> if form.accepts(request.vars,session):
> response.flash = 'Added a thing'
> if request.vars.dupe:
> record = db.things(request.vars.dupe)
> vals = {}
> for k,v in record.items():
> if k in db.things.fields:
> vals[k] = v
> db.things.insert(**vals)
> things = db(db.things.id>0).select()
> return dict(form=form,things=things)
>
> On Dec 3, 6:12 pm, tomt <[email protected]> wrote:
>
> > Hi,
>
> > I've started to write a simple application to learn web2py. I am using
> > SQLFORM to insert, modify and delete records. So far everything is
> > working as planned.
>
> > I would like to give the user the ability add a new record as a copy
> > of an existing one. The idea is that the user would view an existing
> > record, modify a couple fields, and select 'copy' which result in
> > adding a new record.
>
> > I assume that this requires additional code, and I was hoping that
> > someone would suggest an example, or let me know if SQLFORM can do
> > this automatically.
>
> > Thanks in advance,
>
> > - Tom
>
>