2017-01-17 6 views
1

У меня возникают проблемы при загрузке данных JSON в данные. Вот это мой код Python для выполнения, что (сделать запрос к базе данных и возвращать эти данные с jsonify):Невозможно загрузить данные 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 записей).

Любая помощь будет оценена,

С наилучшими пожеланиями.

ответ

2

Try и передать запрос() без атрибутов (т.е. ваш сопоставляются класса) и использовать select_from(). Но прежде всего, вы должны избегать добавления всех() в конце. Datatables, насколько я могу понять, принимает объекты sqlalchemy и выполняет эту работу за вас. В вашем случае, это должно работать:

query = db.session.query().select_from(Feature) 

для этой линии, кроме, ваш код должен работать без проблем.