I'm having the same datatables warning: ajax error so I guess it might be the referenced field that is causing the error because even the table is not being field with data.
El lunes, 17 de junio de 2019, 18:55:02 (UTC-3), Jim S escribió: > > Are you getting an error on the referenced field (Nationality) or is it > just not returning the results you're expecting? > > -Jim > > On Monday, June 17, 2019 at 4:46:14 PM UTC-5, Cristina Sig wrote: >> >> thanks! >> I solved the integer field but it seems that the referenced fields are >> not working. >> I will try to see what is the issue with them >> >> El lunes, 17 de junio de 2019, 18:05:18 (UTC-3), Jim S escribió: >>> >>> I'm guessing it's the phone number field. You can't use 'contains' on a >>> numeric field. So, try this: >>> >>> if search_value and search_value != '' and search_value != 0: >>> try: >>> int_search_value = int(search_value) >>> queries.append((db.Student.firstname.contains(search_value)) | >>> (db.Student.lastname.contains(search_value)) | >>> (db.Student.phone == int_search_value) | >>> (db.Nationality.descripcion.contains(search_value >>> )) >>> >>> except: >>> queries.append((db.Student.firstname.contains(search_value)) | >>> (db.Student.lastname.contains(search_value)) | >>> (db.Nationality.descripcion.contains(search_value >>> )) >>> >>> query = reduce(lambda a, b: (a & b), queries) >>> query.select(left=db.Nationality.on(db.Student.nationality == db. >>> Nationality.id)) >>> >>> Basically, if you can convert the search_value to an int, you want to >>> check the phone number against the int as well. If you can't convert to an >>> int, then don't include phone number in the search. >>> >>> The datatables error is not very helpful. What you want to look at is >>> the error that web2py is generating to confirm that it is the phone number >>> like I think it is. >>> >>> -Jim >>> >>> On Monday, June 17, 2019 at 3:44:27 PM UTC-5, Cristina Sig wrote: >>>> >>>> Hello Jim, >>>> >>>> I tried the code and it shows me an error >>>> >>>> *DataTables warning: table id=tableStudent - Ajax error. For more >>>> information about this error, please see http://datatables.net/tn/7 >>>> <http://datatables.net/tn/7>* >>>> >>>> I think it is not recognising the numeric field or the referenced ones >>>> >>>> >>>> El lunes, 17 de junio de 2019, 11:30:45 (UTC-3), Jim S escribió: >>>>> >>>>> Cristina >>>>> >>>>> I'd look at adding a 'left' argument on my query.select(). >>>>> >>>>> if search_value and search_value != '' and search_value != 0: >>>>> queries.append((db.Student.firstname.contains(search_value)) | >>>>> (db.Student.lastname.contains(search_value)) | >>>>> (db.Student.phone.contains(search_value)) | >>>>> (db.Nationality.descripcion.contains(search_value)) >>>>> >>>>> query = reduce(lambda a, b: (a & b), queries) >>>>> query.select(left=db.Nationality.on(db.Student.nationality == db. >>>>> Nationality.id)) >>>>> >>>>> The above should give you the rows where the search text matches >>>>> firstname or lastname or phone or nationality description. You may want >>>>> to >>>>> change that to 'and' instead of 'or' depending on your requirements. >>>>> >>>>> Make sense? >>>>> >>>>> -Jim >>>>> >>>>> >>>>> >>>>> On Sunday, June 16, 2019 at 8:36:09 PM UTC-5, Cristina Sig wrote: >>>>>> >>>>>> Hello, >>>>>> >>>>>> I'm a newbie on python language so I'm struggling to do some queries. >>>>>> I have a table Student which I use to fill a table on view, above >>>>>> that table, I have a search box, where I would like to provide the >>>>>> option >>>>>> to search in multiple columns (phone, last name, first name, or >>>>>> nationality). >>>>>> I don't know how exactly do a dynamic query in this case because I >>>>>> have some fields which are references from other tables. >>>>>> >>>>>> This is my Db >>>>>> db.define_table('Nationality', >>>>>> Field('descripcion', 'string'), >>>>>> ) >>>>>> >>>>>> db.define_table('Grade', >>>>>> Field('level', 'string'), >>>>>> ) >>>>>> >>>>>> db.define_table('Student', >>>>>> Field('lastname', 'string'), >>>>>> Field('firstname', 'string'), >>>>>> Field('nationality','reference Nationality'), >>>>>> Field('phone', 'integer'), >>>>>> Field('email', 'string'), >>>>>> Field('gradelevel','reference Grade'), >>>>>> ) >>>>>> >>>>>> and this is my try so far >>>>>> queries = [(db.Student.id > 0)] >>>>>> if search_value and search_value != '' and search_value != 0: >>>>>> queries.append(db.Student(search_value)) >>>>>> query = reduce(lambda a,b:(a&b),queries) >>>>>> >>>>>> query.select() >>>>>> >>>>>> >>>>>> >>>>>> I found a generic way to do it but still don't know how to deal with >>>>>> references. >>>>>> Any suggestion/idea would be very appreciated :) >>>>>> >>>>>> queries=[]if arg1 == "xyz": queries.append(db.abc.id > 0)if arg2 == >>>>>> "xyz": queries.append(db.def.id > 0)query = reduce(lambda >>>>>> a,b:(a&b),queries)query.select() >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- 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. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/fc8ef221-4178-42bf-80d5-5365bf0eea35%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.