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.

