【发布时间】:2020-06-13 18:42:00
【问题描述】:
我对 sqlalchemy-datatables 非常陌生,现在我尝试创建 html 表,该表使用 datatables 插件来包含我查询的数据库中的数据,这是我的代码。
routes.py
@app.route('/load_db', methods=['GET', 'POST'])
def load_db():
columns = [
ColumnDT(Customers.customer_code),
ColumnDT(Customers.customer_name),
]
query = db.session.query(Customers)
params = request.args.to_dict()
rowTable = DataTables(params, query, columns)
return jsonify(rowTable.output_result())
models.py
class Customers(db.Model):
__tablename__ = 'customers'
customer_code = db.Column(db.String(30), primary_key=True)
customer_name = db.Column(db.String(100))
customer_address = db.Column(db.String(200))
customer.html
$(document).ready(function () {
$('#customertable').DataTable({
"processing": true,
"serverSide": true,
"ajax": "/load_db"
});
});
当我渲染模板时,它会出现这样的错误。
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/json/encoder.py", line 179, in default
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type Customers is not JSON serializable
这是我打印出来时rowTable.output_result() 的值。
{'draw': '1', 'recordsTotal': '52', 'recordsFiltered': '52', 'data': [{'0': <Customers 1>, '1': '1'}, {'0': <Customers 10>, '1': '10'}, {'0': <Customers 11>, '1': '11'}, {'0': <Customers 12>, '1': '12'}, {'0': <Customers 13>, '1': '13'}, {'0': <Customers 14>, '1': '14'}, {'0': <Customers 15>, '1': '15'}, {'0': <Customers 16>, '1': '16'}, {'0': <Customers 17>, '1': '17'}, {'0': <Customers 18>, '1': '18'}]}
那么我的代码有什么问题,我该如何解决。
【问题讨论】:
-
@Agung Wiyono 感谢您的回复,但它对我不起作用。
标签: python flask datatables sqlalchemy jinja2