2017-01-17 20 views
1

JSONデータをデータテーブルにロードする際に問題があります。 ここでは、(データベースにクエリを実行し、jsonifyでそのデータを返す)ことを実行するために、私のPythonコードです:JSONデータをjQueryのsqlalchemy-datatableにロードできません

@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()) 

その後、私はテーブル形式でJinja2のテンプレート(usersAdminSection.html)を持っていますそして、Ajaxリクエスト:

だから、
{% 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 records)。

ご協力いただけると助かります。

よろしくお願いいたします。

答えて

2

query()属性(マッピングされたクラス)を使用せずにselect_from()を試してください。しかし、とりわけall()を最後に追加するのは避けなければなりません。私が理解できる限り、Datatablesはsqlalchemyオブジェクトを受け入れ、あなたのために仕事をします。 あなたのケースでは、この作業をする必要があります:

この行を除き
query = db.session.query().select_from(Feature) 

、あなたのコードは問題なく実行する必要があります。

関連する問題