I just ran into a similar problem... I think.  I defined a
list:reference field like so:

    Field("teams","list:reference team",label='Teams attending')

The problem is that after I inserted one record (with no entries in
the 'teams' field, I now get an error whenever I try to use the
database administrator on the table.  The exact error is "BELONGS
takes exactly 3 arguments (2 given)."

On digging further, it seems to be happening in SQLTABLE __init__, in
the fragment:

     elif field.represent:
        r = field.represent(r)

Where r is None and the field is the list:reference field above.
There are no entries in the team table as of yet, so perhaps it is
returning None instead of an empty list.  I'll try entering some teams
next.

I'm still getting used to this WingIDE stuff, but it has vastly
extended my view of what's going on under the covers!

-- Joe B.

On Jan 28, 2:40 pm, Massimo Di Pierro <massimo.dipie...@gmail.com>
wrote:
> Can you please try trunk?
>
> On Jan 28, 3:47 pm, LightOfMooN <vladsale...@yandex.ru> wrote:
>
> > Running 1.91.6 too.
>
> > db.define_table('tag',
> >     Field('name', 'string'), format='%(name)s')
>
> > db.define_table('rolic',
> >     Field('name', 'string'),
> >     Field('tags', 'list:referencetag', required=True),
> >     )
>
> > Add 1 rolic with empty tags, and "database administration -> db.rolic"
> > goes to error:
> > ProgrammingError: syntax error at or near ")"
> > LINE 1: SELECT  tag.id FROM tag WHERE (tag.id IN ());
>
> > ERROR SNAPSHOT
> > <class 'psycopg2.ProgrammingError'>(syntax error at or near ")"
> > LINE 1: SELECT  tag.id FROM tag WHERE (tag.id IN ());
> >                                                   ^
> > )
>
> > On 29 янв, 00:09, DenesL <denes1...@yahoo.ca> wrote:
>
> > > I have a table with emptylist:referencefields and db admin does not
> > > have a problem with it.
> > > Running 1.91.6 .
>
> > > On Jan 28, 10:12 am, LightOfMooN <vladsale...@yandex.ru> wrote:
>
> > > > It's a problem, that if i have emptylist:reference, the standard
> > > > database administration don't work because of wrong query:
>
> > > > Traceback (most recent call last):
> > > >   File "/home/www-data/web2py/gluon/restricted.py", line 188, in
> > > > restricted
> > > >     exec ccode in environment
> > > >   File "/home/www-data/web2py/applications/funportal/views/
> > > > appadmin.html", line 191, in <module>
> > > >     <p>
> > > >   File "/home/www-data/web2py/gluon/sqlhtml.py", line 1349, in
> > > > __init__
> > > >     r = field.represent(r)
> > > >   File "/home/www-data/web2py/gluon/dal.py", line 3113, in
> > > > list_ref_repr
> > > >     refs = r._db(r.id.belongs(ids)).select(r.id)
> > > >   File "/home/www-data/web2py/gluon/dal.py", line 4507, in select
> > > >     return self.db._adapter.select(self.query,fields,attributes)
> > > >   File "/home/www-data/web2py/gluon/dal.py", line 1003, in select
> > > >     rows = response(sql)
> > > >   File "/home/www-data/web2py/gluon/dal.py", line 994, in response
> > > >     self.execute(sql)
> > > >   File "/home/www-data/web2py/gluon/dal.py", line 1067, in execute
> > > >     return self.log_execute(*a, **b)
> > > >   File "/home/www-data/web2py/gluon/dal.py", line 1064, in log_execute
> > > >     return self.cursor.execute(*a,**b)
> > > > ProgrammingError: syntax error at or near ")"
> > > > LINE 1: SELECT  tag.id FROM tag WHERE (tag.id IN ());
>
>

Reply via email to