跳转到主要内容

将SQLAlchemy与DataTable(框架无关)集成 - 包含对ninchanese.com的修复

项目描述

安装

该软件包可在PyPI上获取,并在Python 2.7到3.4上进行了测试

pip install datatables

用法

使用DataTable非常简单。通过传递您的请求参数(或另一个类似于字典的对象)、您的模型类、一个基础查询和一系列列来构建一个DataTable实例。列列表可以包含简单的字符串,作为列名,或者包含(datatable_name, model_name)、(datatable_name, model_name, filter_function)或(datatable_name, filter_function)的元组。

可以通过DataTable.add_data添加其他数据,例如超链接,该方法接受一个在每个实例上调用的可调用对象。查看下面的用法示例以获取更多信息。

示例

models.py

class User(Base):
    __tablename__ = 'users'

    id          = Column(Integer, primary_key=True)
    full_name   = Column(Text)
    created_at  = Column(DateTime, default=datetime.datetime.utcnow)

    # Use lazy=joined to prevent O(N) queries
    address     = relationship("Address", uselist=False, backref="user", lazy="joined")

class Address(Base):
    __tablename__ = 'addresses'

    id          = Column(Integer, primary_key=True)
    description = Column(Text, unique=True)
    user_id     = Column(Integer, ForeignKey('users.id'))

views.py

@view_config(route_name="data", request_method="GET", renderer="json")
def users_data(request):
    # User.query = session.query(User)
    table = DataTable(request.GET, User, User.query, [
        "id",
        ("name", "full_name", lambda i: "User: {}".format(i.full_name)),
        ("address", "address.description"),
    ])
    table.add_data(link=lambda o: request.route_url("view_user", id=o.id))
    table.searchable(lambda queryset, user_input: perform_some_search(queryset, user_input))

    return table.json()

template.jinja2

<table class="table" id="clients_list">
    <thead>
        <tr>
            <th>Id</th>
            <th>User name</th>
            <th>Address</th>
        </tr>
    </thead>
    <tbody>
    </tbody>
</table>

<script>
    $("#clients_list").dataTable({
        serverSide: true,
        processing: true,
        ajax: "{{ request.route_url("data") }}",
        columns: [
            {
                data: "id",
                "render": function(data, type, row){
                    return $("<div>").append($("<a/>").attr("href", row.DT_RowData.link).text(data)).html();
                }
            },
            { data: "name" },
            { data: "address" }
        ]
</script>

项目详情


下载文件

下载适用于您平台的应用程序。如果您不确定该选择哪个,请了解有关安装包的更多信息。

源分发

此版本没有提供源分发文件。请参阅有关生成分发存档的教程。

构建分发

ninchanese_datatables-0.5.1-py2.py3-none-any.whl (7.4 kB 查看哈希值)

上传时间 Python 2 Python 3

支持