Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否有一种使用sqlalchemy datatables修改表数据的方法?_Python_Jquery_Flask_Datatables_Sqlalchemy - Fatal编程技术网

Python 是否有一种使用sqlalchemy datatables修改表数据的方法?

Python 是否有一种使用sqlalchemy datatables修改表数据的方法?,python,jquery,flask,datatables,sqlalchemy,Python,Jquery,Flask,Datatables,Sqlalchemy,我今天花了一些时间和你玩。我的目标是简单地实现ajax将查询数据加载到数据表以及分页。它很容易处理这些问题 迄今为止,最大的障碍是缺乏文档,尽管该模块的使用似乎相当不错。另外,如果有人知道一些文档,请分享 尽管如此,经过一些尝试和错误,我还是能够让下面的代码正常工作(为了简洁起见,我特意省略了我的模型) 从视图进行路由 @app.route('/accounts/query/<path:select>/', methods=['GET']) @roles_accepted('admi

我今天花了一些时间和你玩。我的目标是简单地实现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)
我剩下的几个争论点之一是:由于所有的datatable信息都是由jquery datatables模块绘制的,而sqlalchemy datatables提供了这些信息,因此我无法找到一种方法来定制表中的数据,就像我在几乎所有其他我使用过的datatable中所做的那样(有关在一行中创建指向特定用户记录的链接的示例,请参见下文)


电子邮件
名字
姓
企业名称
最后登录
角色
{users%%中的用户为%s}
{{user.first_name}
{{user.last_name}
{{user.business_name}
{{user.last_login_at | local_datetime}
{{user.roles | rolesformat}}
{%endfor%}

有没有办法在sqlalchemy datatables创建的表中创建这样的链接?

正如经常发生的那样,一个晚上的睡眠和对问题的重新审视将产生结果

这个问题实际上与sqlalchemy datatables无关,而更多的是关于datatables本身

下面是使用id将我的表中的名称数据转换为链接的javascript

$(document).ready(function () {
    var table = $('table.table').dataTable( {
        "processing": true,
        "serverSide": true,
        "ajax":"{{ url_for('query_accounts', select='all') }}",
        "order": [1, 'asc'],
        /* render name column strings as links */
        "columnDefs": [ {
            "targets": 1,
            "data": null,
            "render": function (data, type, row, meta) {
                return "<a href='{{ url_for('accounts') }}" + data[0] + "/'>" + data[1] + "</a>";
            }
        } ]
    } );
});
$(文档).ready(函数(){
变量表=$('table.table')。数据表({
“处理”:对,
“服务器端”:正确,
“ajax”:“{url\u for('query\u accounts',select='all')}”,
“订单”:[1,‘asc’],
/*将名称列字符串呈现为链接*/
“columnDefs”:[{
"目标":一,,
“数据”:空,
“呈现”:函数(数据、类型、行、元){
返回“”;
}
} ]
} );
});
$(document).ready(function () {
  $('table.table').dataTable({
    "processing": true,
    "serverSide": true,
    "ajax":"{{ url_for('query_accounts', select='all') }}",
    "order": [1, 'asc']
  });
});
<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>
$(document).ready(function () {
    var table = $('table.table').dataTable( {
        "processing": true,
        "serverSide": true,
        "ajax":"{{ url_for('query_accounts', select='all') }}",
        "order": [1, 'asc'],
        /* render name column strings as links */
        "columnDefs": [ {
            "targets": 1,
            "data": null,
            "render": function (data, type, row, meta) {
                return "<a href='{{ url_for('accounts') }}" + data[0] + "/'>" + data[1] + "</a>";
            }
        } ]
    } );
});