Good afternoon,
I'm trying to create an autocomplete field to search in the table 
db.auth_user, but the search must be done with the full name.
As db.auth_user has two separate fields (first_name, and last_name), I 
created a virtual field to compose both fields:

db.auth_user.full_name = Field.Virtual('full_name', lambda row: '%s %s' %(
row.auth_user.first_name, row.auth_user.last_name))

Then, I used the autocomplete widget in a field:

db.define_table('my_table',
 Field('my_user', 'reference auth_user', notnull=True, unique=False, label=
'User'),
 ...
)


db.my_table.my_user.widget = SQLFORM.widgets.autocomplete(
        request, db.auth_user.full_name, id_field=db.auth_user.id, db=db,
        at_beginning=False, limitby=(0, 10), min_length=2)



And I get this error when creating a new form:

<type 'exceptions.AttributeError'> 'DAL' object has no attribute 'None'
Versión
web2py™ Version 2.14.6-stable+timestamp.2016.05.10.00.21.47Rastreo

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.

Traceback (most recent call last):
  File "/home/clm/Documentos/p/productos/web2py_2.14.6/gluon/restricted.py", 
line 227, in restricted
    exec ccode in environment
  File 
"/home/clm/Documentos/p/productos/web2py_2.14.6/applications/VREscalas/controllers/default.py"
 <https://127.0.1.1:8000/admin/default/edit/VREscalas/controllers/default.py>, 
line 1119, in <module>
  File "/home/clm/Documentos/p/productos/web2py_2.14.6/gluon/globals.py", line 
417, in <lambda>
    self._caller = lambda f: f()
  File "/home/clm/Documentos/p/productos/web2py_2.14.6/gluon/tools.py", line 
4241, in f
    return action(*a, **b)
  File 
"/home/clm/Documentos/p/productos/web2py_2.14.6/applications/VREscalas/controllers/default.py"
 <https://127.0.1.1:8000/admin/default/edit/VREscalas/controllers/default.py>, 
line 140, in programas
    lambda row: A('resumen', _href=URL(
  File "/home/clm/Documentos/p/productos/web2py_2.14.6/gluon/sqlhtml.py", line 
2307, in grid
    create_form = SQLFORM(table, **sqlformargs)
  File "/home/clm/Documentos/p/productos/web2py_2.14.6/gluon/sqlhtml.py", line 
1288, in __init__
    inp = field.widget(field, default)
  File "/home/clm/Documentos/p/productos/web2py_2.14.6/gluon/sqlhtml.py", line 
748, in __call__
    table_rows = 
self.db(self.db[self.fields[0].tablename]).select(orderby=self.orderby)
  File 
"/home/clm/Documentos/p/productos/web2py_2.14.6/gluon/packages/dal/pydal/base.py",
 line 914, in __getitem__
    return self.__getattr__(str(key))
  File 
"/home/clm/Documentos/p/productos/web2py_2.14.6/gluon/packages/dal/pydal/base.py",
 line 921, in __getattr__
    return BasicStorage.__getattribute__(self, key)
AttributeError: 'DAL' object has no attribute 'None':


I printed in console the self.fields[0]:
self.fields {'comment': None, 'represent': <function <lambda> at 
0x7f6c907310c8>, 'widget': None, 'name': 'full_name', 'f': <function 
<lambda> at 0x7f6c90731050>, 'requires': None, 'readable': True, 'label': 'Full 
name', 'writable': False, 'filter_out': None, 'tablename': None, 'formatter'
: <function IDENTITY at 0x7f6c9e090140>, 'type': 'string'}

It happens that the db.auth_user.full_name.tablename is None, i.e., the 
virtual field have no tablename attibute as the autocomplete code seems to 
expect.
Should I open a ticket?

Thank you and best regards.

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to