Я провел некоторое время, играя с sqlalchemy-datatables сегодня.Моя цель состояла в том, чтобы просто выполнить ajax-загрузку данных запроса в таблицы данных, а также разбить их на страницы.Он позаботился об этом очень легко.
Самым большим препятствием на сегодняшний день является отсутствие документации, хотя, похоже, этот модуль используется довольно прилично.Кроме того, если кто-то знает какую-либо документацию, пожалуйста, поделитесь!
Несмотря на это, и с некоторыми пробами и ошибками, я смог заставить работать приведенный ниже код (я намеренно пропустил свои моделидля краткости).
маршрут из просмотров
@app.route('/accounts/query/<path:select>/', methods=['GET'])
@roles_accepted('admin', 'copy', 'client')
def query_accounts(select):
if select == 'all':
client = db.aliased(User)
csr = db.aliased(User)
columns = [
ColumnDT(Account.id),
ColumnDT(Account.name),
ColumnDT(client.fullname),
ColumnDT(csr.fullname),
ColumnDT(client.current_login_at)
]
query = db.session.query() \
.select_from(Account) \
.outerjoin(client, Account.owner) \
.outerjoin(csr, Account.copywriter)
params = request.args.to_dict()
rowTable = DataTables(params, query, columns)
return jsonify(rowTable.output_result())
return abort(404)
HTML из шаблона
<table class="table" id="datatable">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Client</th>
<th>CSR</th>
<th>Last Access</th>
</tr>
</thead>
<tbody></tbody>
</table>
JavaScriptиз шаблона
$(document).ready(function () {
$('table.table').dataTable({
"processing": true,
"serverSide": true,
"ajax":"{{ url_for('query_accounts', select='all') }}",
"order": [1, 'asc']
});
});
Один из немногих оставленных мной споров заключается в следующем: так как вся информация о данных извлекается модулем jquery-datatables, а sqlalchemy-datatables предоставляет эту информацию,Я не могу найти способ настроить данные в таблице, как это обычно делается почти во всех других данных, которые я использовал (см. Ниже пример создания ссылки в строке на конкретную запись пользователя).
<table class="table" id="datatable">
<thead>
<tr>
<th>Email</th>
<th>First Name</th>
<th>Last Name</th>
<th>Business Name</th>
<th>Last Login</th>
<th>Roles</th>
</tr>
</thead>
<tbody>
{% for user in users %}
<tr>
<td><a href="{{ url_for('users', id=user.id) }}">{{ user.email }}</a></td>
<td>{{ user.first_name }}</td>
<td>{{ user.last_name }}</td>
<td>{{ user.business_name }}</td>
<td>{{ user.last_login_at|local_datetime }}</td>
<td>{{ user.roles|rolesformat }}</td>
</tr>
{% endfor %}
</tbody>
</table>
Есть ли способ создать такие ссылки в таблицах, создаваемых sqlalchemy-datatables?