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 [email protected].
For more options, visit https://groups.google.com/d/optout.