【问题标题】:How to using sqlalchemy-datatables on Flask?如何在 Flask 上使用 sqlalchemy-datatables?
【发布时间】: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'}]}

那么我的代码有什么问题,我该如何解决。

【问题讨论】:

标签: python flask datatables sqlalchemy jinja2


【解决方案1】:

尝试将您的查询更改为db.session.query().select_from(Customer)。这是写在 sqlalchemy-datatables github 页面上的内容。

我还没有解释它们的不同之处。

【讨论】:

  • 抱歉,我还有一些问题,您知道如何将按钮添加到存储该行的customer_code 的每一列吗?
  • 你可能想搜索datatables render。如果您已经尝试过,但仍有问题,请发布另一个问题。
猜你喜欢
  • 2021-10-17
  • 1970-01-01
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
  • 2014-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多