将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>
项目详情
关闭
哈希值 for ninchanese_datatables-0.5.1-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ecb93b0d52b70625d9b7c28e52b30560def68cfb262233f7198d8f759cf83c65 |
|
MD5 | ccaec4f6513f92eada722f07dbdadcd1 |
|
BLAKE2b-256 | d35b2857f9ee92d40d8bb5baca6ef4ac13795c4eb116706f2fa3bc64210a72c1 |