this should now be default behavior in trunk.No need for
db.test.referes_to.requires=IS_EMPTY_OR(IS_IN_DB(db,'test.refers_to'))

please check it.

On Oct 16, 5:38 pm, mdipierro <[email protected]> wrote:
> After:
> db.define_table('test',
>     Field('name', writable=False),
>     Field('refers_to', 'reference test'))
>
> add
>
> db.test.referes_to.requires=IS_EMPTY_OR(IS_IN_DB(db,'test.refers_to'))
>
> or it will not take a empty reference.
>
> On a second thought... this should probably be the default behavior
> for self-references.
>
> On Oct 16, 5:10 pm, BigBaaadBob <[email protected]> wrote:
>
> > If I have this model:
>
> > db.define_table('test',
> >     Field('name', writable=False),
> >     Field('refers_to', 'reference test'))
>
> > And this controller function:
>
> > def create():
> >     db.test.name.default=request.args(0)
> >     form = crud.create(db.test, next = URL('index'))
> >     return dict(form=form)
>
> > And go to URL .../create/xyzzy, I get the expected form but when I
> > submit I get a ticket with this exception:
>
> > Exception: <type 'exceptions.ValueError'>(invalid literal for int()
> > with base 10: '')
>
> > referring to this code:
>
> >  if field.type == 'integer':
> >                 if fields[fieldname] != None:
> >                     fields[fieldname] = int(fields[fieldname])
> >             elif str(field.type).startswith('reference'):
> >                 if fields[fieldname] != None and
> > isinstance(self.table,Table) and not keyed:
> >                     fields[fieldname] = int(fields[fieldname])
>
> >             elif field.type == 'double':
> >                 if fields[fieldname] != None:
> >                     fields[fieldname] = float(fields[fieldname])
>
> > What dumb thing did I do?
>
>

Reply via email to