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.

Reply via email to