将sqlalchemy与datatables集成(与框架无关)-包含ninchanese.com的修复程序
ninchanese-datatables的Python项目详细描述
用法
使用数据表很简单。通过传递请求参数(或其他类似dict的参数)来构造datatable实例 对象),模型类、基本查询和一组列。列列表可以包含以下简单字符串 列名或元组包含(datatable_name,model_name),(datatable_name,model_name,filter_function)或 (datatable_name,filter_函数)。
可以通过datatable.add_data添加其他数据,例如超链接,它接受调用 每个实例。查看下面的使用示例以获取更多信息。
示例
models.py
classUser(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) queriesaddress=relationship("Address",uselist=False,backref="user",lazy="joined")classAddress(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")defusers_data(request):# User.query = session.query(User)table=DataTable(request.GET,User,User.query,["id",("name","full_name",lambdai:"User: {}".format(i.full_name)),("address","address.description"),])table.add_data(link=lambdao:request.route_url("view_user",id=o.id))table.searchable(lambdaqueryset,user_input:perform_some_search(queryset,user_input))returntable.json()
template.jinja2
<tableclass="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>