我在将JSON数据加载到数据表时遇到了麻烦。 这是执行该操作的Python代码(对数据库进行查询并使用jsonify返回该数据):
@users_blueprint.route('/data')
def data():
"""Return server side data."""
# defining columns
columns = [
ColumnDT(User.firstname),
ColumnDT(User.lastname),
ColumnDT(User.email),
ColumnDT(User.urole)
]
# defining the initial query
users = db.session.query(User).all()
# GET parameters
params = request.args.to_dict()
# instantiating a DataTable for the query and table needed
rowTable = DataTables(params, users, columns)
print "AHHAX"
print json.dumps(rowTable.output_result())
# returns what is needed by DataTable
return jsonify(rowTable.output_result())
然后,我有一个带有表格格式和ajax请求的jinja2模板( usersAdminSection.html ):
{% block extra_stylesheets %}
<link href="https://cdn.datatables.net/1.10.13/css/jquery.dataTables.css" rel="stylesheet">
{% endblock %}
{% block content %}
<div class="row">
<div class="col-lg-12">
<table id="dt_110x" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Email</th>
<th>Role</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
</div>
{% endblock %}
{% block extra_javascripts %}
<script src="https://cdn.datatables.net/1.10.13/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
var table = $('#dt_110x').DataTable({
"processing": true,
"serverSide": true,
"ajax": "{{ url_for('users.data') }}"
});
});
</script>
{% endblock %}
因此,当我刷新该模板/页面时,我会收到一个警告对话框告诉我:
"DataTables warning: table id=dt_110x - 'list' object has no attribute 'add_columns'"
因此,数据无限制地处理而没有任何回报( 0记录)。
任何帮助将不胜感激,
最好的问候。
答案 0 :(得分:4)
尝试并传递没有属性的 query()(即您的映射类)并使用 select_from()。但最重要的是,你必须避免在最后附加all()。据我所知,数据表接受sqlalchemy对象并为您完成工作。 在你的情况下,这应该工作:
query = db.session.query().select_from(Feature)
除了这一行,你的代码应该没有问题。