查看“蓝鲸Django:数据分页、复杂查询和日志记录”的源代码
←
蓝鲸Django:数据分页、复杂查询和日志记录
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==数据分页方法== 前端分页:Datatables, kendo等 后端分页: *逻辑实现 *paginator分页 from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger 重要方法: *Paginator(objects, one_page_nums) *Paginator对象 *p.page(current_page) #当前页面的属性 *a.object_list #元素列表 代码: <nowiki>>>> from django.core.paginator import Paginator >>> objects = ['john', 'paul', 'george' 'ringo'] >>> p = Paginator(objects, 2) >>> p.page(1) <Page 1 of 2> >>> a = p.page(1) >>> a <Page 1 of 2> >>> a.object_list ['john', 'paul']</nowiki> ==复杂查询== ===Model外键=== 一个表中的 FOREIGN KEY 指向另一个 表中的 PRIMARY KEY [[文件:bd20-5-42.png]] 请注意,"Orders" 表中的 "P_Id" 列指向 "Persons" 表中的 "P_Id" 列。 "Persons" 表中的 "P_Id" 列是 "Persons" 表中的 PRIMARY KEY。 "Orders" 表中的 "P_Id" 列是 "Orders" 表中的 FOREIGN KEY。 FOREIGN KEY 约束用于预防破坏表之 间连接的动作 FOREIGN KEY 约束也能防止非法数据 插入外键列,因为它必须是它指向的那 个表中的值之一 ===基本查询=== [[文件:bd20-5-43.png]] <nowiki>1. awards = Award.objects.filter(name contains='qb') 2. awards = Award.objects.filter(name contains='qb', organization name=u'腾讯科技') 3. awards = Award.objects.filter(name contains='qb', state=1) 4. awards = Award.objects.filter(name contains='qb', start_time gte='2017-12-01', end_time lte='2017-12-03') </nowiki> ===复杂查询-filter=== <nowiki>过滤关键字 含义 SQL contains 包含 where field like“%test%” startswith 以..开头 where field like“test%” gt, gte 大于,大于等于 where field > 10 lt, lte 小于,小于等于 where field < 10 range=[a,b] a,b两者之间 where field between a and b in=(a, b) 值属于列表中的值 where field in (a,b) </nowiki> <nowiki> 1.awards = Award.objects.filter(name contains='qb') 2.awards = Award.objects.filter(name startswith='qb') 3.awards = Award.objects.filter(name endswith='qb') 4.awards = Award.objects.filter(applicant_num range=[10,20])</nowiki> 排除 Award.objects.filter(name contains="qb").exclude(is_delete=1) 排序 Award.objects.all().order_by('start_time') 去重 Award.objects.all().values('name').distinct() 总数 Award.objects.all().count() ===复杂查询-Q查询=== 在filter中使用Q表达式进行更复杂的查询 可通过操作符 |(或),& (与),~ (非)来组合Q表达式 <nowiki>Award.objects.filter(Q(name contains=“qb”) & Q(level=2)) Award.objects.filter(Q(name istartswith=“qb”)|Q(applicant_num Award.objects.filter(~Q(name startswith=“qb”)) </nowiki> ==日志记录== 可参考[[Python日志记录]]
返回至
蓝鲸Django:数据分页、复杂查询和日志记录
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息