as_list() is missed, try:
people = json.dumps(rows.as_list())


On Tuesday, August 29, 2017 at 4:45:47 AM UTC+3, 黄祥 wrote:
>
> trying your suggestion with datatables that have web2py multiple table 
> relations join
> *ref:*
>
> http://www.web2pyslices.com/slice/show/2052/using-datatablesnet-with-web2py-for-ultra-fast-grid-display
>
> *models/db.py*
> db.define_table('sale_order', Field('sale_order_no') )
> db.define_table('cash_in', Field('cash_in_no'), Field('sale_order_no', 
> 'reference sale_order') )
> db.define_table('cash_out', Field('cash_out_no'), Field('sale_order_no', 
> 'reference sale_order') )
> if db(db.sale_order).isempty():
>     db.sale_order.update_or_insert(sale_order_no = 'SO1')
>     db.cash_in.update_or_insert(cash_in_no = 'CI1', sale_order_no = 1)
>     db.cash_in.update_or_insert(cash_in_no = 'CI2', sale_order_no = 1)
>     db.cash_out.update_or_insert(cash_out_no = 'CO1', sale_order_no = 1)
>     db.cash_out.update_or_insert(cash_out_no = 'CO2', sale_order_no = 1)
>
> *controllers/default.py*
> def index():
>     import json
>     #query = ((db.cash_in.sale_order_no == db.sale_order.id) | 
> (db.cash_out.sale_order_no == db.sale_order.id) )
>     #rows = db(query).select().as_list()
>     #left = [db.cash_in.on(db.sale_order.id == db.cash_in.sale_order_no), 
> db.cash_out.on(db.sale_order.id == db.cash_out.sale_order_no) ]
>     left = db.cash_in.on(db.sale_order.id == db.cash_in.sale_order_no)
>     rows = db().select(db.sale_order.ALL, db.cash_in.ALL, left = left)
>     people = json.dumps(rows)
>     return dict(results = XML(people) )
>
> *views/default/index.html*
> {{extend 'layout.html'}}
> <script src="
> https://cdn.datatables.net/1.10.15/js/jquery.dataTables.min.js";></script>
> <link rel="stylesheet" media="screen" href="
> https://cdn.datatables.net/1.10.15/css/jquery.dataTables.min.css";>
> <table id="person-table" class="table table-bordered table-striped" 
> cellspacing="0" width="100%">
>     <thead>
>         <tr>
>             <th>Sale Order No</th>
>             <th>Cash In No</th>
>             <th>Cash Out No</th>
>         </tr>
>     </thead>
> </table>
> <script>
> $(document).ready(function(){
>     $("#person-table").DataTable({
>         data:  {{=results}},
>         columns: [
>             { data: 'sale_order.sale_order_no' },
>             { data: 'cash_in.cash_in_no' },
>             { data: 'cash_out.cash_out_no' }
>         ]
>     })
> });
> </script>
>
> *Return an error traceback*
> Traceback (most recent call last):
>   File "/Users/MacBookPro/site/web2py/gluon/restricted.py", line 219, in 
> restricted
>     exec(ccode, environment)
>   File 
> "/Users/MacBookPro/site/web2py/applications/a/controllers/default.py", line 
> 60, in <module>
>   File "/Users/MacBookPro/site/web2py/gluon/globals.py", line 409, in 
> <lambda>
>     self._caller = lambda f: f()
>   File 
> "/Users/MacBookPro/site/web2py/applications/a/controllers/default.py", line 
> 19, in index
>     people = json.dumps(rows)
>   File 
> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py",
>  
> line 243, in dumps
>     return _default_encoder.encode(obj)
>   File 
> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py",
>  
> line 207, in encode
>     chunks = self.iterencode(o, _one_shot=True)
>   File 
> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py",
>  
> line 270, in iterencode
>     return _iterencode(o, 0)
>   File 
> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py",
>  
> line 184, in default
>     raise TypeError(repr(o) + " is not JSON serializable")
> TypeError: <Rows (2)> is not JSON serializable
>
> is it possible to pass dal join rows result into json format in web2py?
>
> thanks and best regards,
> stifan
>

-- 
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.

Reply via email to