Thanks a lot, Anthony. I use to check the framework code before posting questions, and when I saw this in the callback method of the autocomplete widget: def callback(self): if self.keyword in self.request.vars: field = self.fields[0] if type(field) is Field.Virtual: records = [] table_rows = self.db(self.db[field.tablename]).select(orderby= self.orderby)
I guessed wrongly that virtual fields were supported. Thank you and best regards. El lunes, 5 de junio de 2017, 17:11:37 (UTC+2), Anthony escribió: > > You cannot use autocomplete to search a virtual field. It runs a database > query, so the field must exist in the database. > > Anthony > > On Monday, June 5, 2017 at 9:23:51 AM UTC-4, Carlos Kitu wrote: >> >> 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.