2017-01-17 4 views
1

JSON 데이터를 데이터 테이블에로드하는 데 문제가 있습니다. 그런 다음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)가 : 여기 내 파이썬 코드는 그 (데이터베이스에 질의를하고 jsonify와 그 데이터를 반환)을 수행하는 것입니다 와 아약스 요청 : 그래서

{% 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 레코드).

도움이 되시길 바랍니다.

감사합니다.

답변

2

시도하고 쿼리() 속성없이 (즉 매핑 된 클래스)를 통과하고 select_from()를 사용합니다. 하지만 무엇보다 결국 all()을 추가하는 것을 피해야합니다. 데이터 형식은 이해할 수있는 한 sqlalchemy 개체를 받아들이고 작업을 수행합니다. 귀하의 경우,이 작업을해야합니다 :

이 줄을 제외하고
query = db.session.query().select_from(Feature) 

, 코드는 문제없이 실행해야합니다.