Django(1)-简介
Django(2)-创建项目及默认项目目录结构介绍
Django(3)-配置文件详解
Django(4)-URL和视图
Django(5)-路由配置实例
Django(6)-请求及响应
Django(7)-Get请求和Post请求
Django(8)-设计模式
Django(9)-模板层简介与入门实例
Django(10)-模板层的变量和标签
Django(11)-模板层的过滤器和继承
Django(12)-url反向解析
Django(13)-静态文件
Django(14)-应用及分布式路由
Django(15)-模型层及ORM介绍
Django(16)-ORM基础字段及选项
Django(17)-ORM创建数据
Django(18)-ORM常用的查询函数详解及实例演示
Django(19)-ORM条件查询
Django(20)-ORM更新操作及实例演示
Django(21)-ORM删除操作及实例演示
Django(22)-ORM中F对象和Q对象
Django(23)-ORM聚合查询和原生数据库操作
Django(24)-admin后台管理设置步骤以及常见样式详解
Django实战技巧(1)-开发测试生产环境配置切换处理技巧
Django实战技巧(2)-git代码仓分支管理技巧
Django实战技巧(3)-项目配置
1、条件查询方法
- filter()
- 语法;MyMode.objects.filter(属性1=值1,属性2=值2)
- 作用:返回包含此条件的全部的数据集
- 返回值:QuerySet容器对象,内部存放MyModel实例
- 说明:当多个属性在一起时为‘与’的关系
如:
>>> from app1.models import Person
>>> persons=Person.objects.filter(name="zhangsan")
>>> persons
<QuerySet [<Person: 姓名:zhangsan,年龄:30,性别:man>]>
>>> for p in persons:
... print(p.name,p.age,p.sex)
...
zhangsan 30 man
>>> persons=Person.objects.filter(name="zhangsan",sex="man")
>>> persons
<QuerySet [<Person: 姓名:zhangsan,年龄:30,性别:man>]>
>>> for p in persons:
... print(p.name,p.age,p.sex)
...
zhangsan 30 man
>>>
- exclude(条件)
- 语法:MyModel.objects.exclude(条件)
- 作用:返回不包含此条件的全部的数据集)
如:
>>> from app1.models import Person
>>> persons=Person.objects.exclude(age=20)
>>> persons
<QuerySet [<Person: 姓名:zhangsan,年龄:30,性别:man>, <Person: 姓名:lisi,年龄:25,性别:man>]>
>>> for p in persons:
... print(p.name,p.age,p.sex)
...
zhangsan 30 man
lisi 25 man
>>>
- get(条件)
- 语法:MyModel.objects.get(条件)
- 作用:返回满足条件的唯一一条数据
- 说明:该方法只能返回一条数据,如果查询多条数据或者没查询到数据则抛出异常
如:
>>> from app1.models import Person
>>> person=Person.objects.get(name="zhangsan",age=30)
>>> person
<Person: 姓名:zhangsan,年龄:30,性别:man>
>>> print(p.name,p.age,p.sex)
lisi 25 man
>>> person=Person.objects.get(sex="man")
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Users\Administrator\.virtualenvs\django-5F60hEIM\lib\site-packages\django\db\models\manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Users\Administrator\.virtualenvs\django-5F60hEIM\lib\site-packages\django\db\models\query.py", line 439, in get
raise self.model.MultipleObjectsReturned(
app1.models.Person.MultipleObjectsReturned: get() returned more than one Person -- it returned 2!
>>> person=Person.objects.get(name="zhangsan",sex="woman")
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Users\Administrator\.virtualenvs\django-5F60hEIM\lib\site-packages\django\db\models\manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Users\Administrator\.virtualenvs\django-5F60hEIM\lib\site-packages\django\db\models\query.py", line 435, in get
raise self.model.DoesNotExist(
app1.models.Person.DoesNotExist: Person matching query does not exist.
>>>
2、查询谓词
- 定义:做更灵活的条件查询时需要使用查询谓词
- 说明:每个查询谓词是一个独立的查询功能
- 常见的查询谓词有:
- __exact:等值匹配
- __contains:包含指定的值
- __startswith:以xxx开始
- __endswith:以xxx结尾
- __gt:大于指定值
- __gte:大于等于
- __lt:小于
- __lte:小于等于
- __in:查找数据是否在指定的方位内
- __range:查找数据是否在指定的区间范围内
如:
>>> from app1.models import Person
>>> persons=Person.objects.filter(name__exact="zhangsan")
>>> persons
<QuerySet [<Person: 姓名:zhangsan,年龄:30,性别:man>]>
>>> for p in persons:
... print(p.name,p.age,p.sex)
...
zhangsan 30 man
>>> persons=Person.objects.filter(name__contains="zhang")
>>> persons
<QuerySet [<Person: 姓名:zhangsan,年龄:30,性别:man>]>
>>> persons=Person.objects.filter(name__startswith="zhang")
>>> persons
<QuerySet [<Person: 姓名:zhangsan,年龄:30,性别:man>]>
>>> persons=Person.objects.filter(name__endswith="san")
>>>
>>> persons
<QuerySet [<Person: 姓名:zhangsan,年龄:30,性别:man>]>
>>> persons=Person.objects.filter(age__gt=25)
>>> persons
<QuerySet [<Person: 姓名:zhangsan,年龄:30,性别:man>]>
>>> persons=Person.objects.filter(age__gte=25)
>>> persons
<QuerySet [<Person: 姓名:zhangsan,年龄:30,性别:man>, <Person: 姓名:lisi,年龄:25,性别:man>]>
>>> persons=Person.objects.filter(age__lt=30)
>>> persons
<QuerySet [<Person: 姓名:lisi,年龄:25,性别:man>]>
>>> persons=Person.objects.filter(age__lte=30)
>>> persons
<QuerySet [<Person: 姓名:zhangsan,年龄:30,性别:man>, <Person: 姓名:lisi,年龄:25,性别:man>]>
>>> persons=Person.objects.filter(name__in=["zhangsan","wangwu"])
>>> persons
<QuerySet [<Person: 姓名:zhangsan,年龄:30,性别:man>]>
>>> persons=Person.objects.filter(age__range=(25,30))
>>> persons
<QuerySet [<Person: 姓名:zhangsan,年龄:30,性别:man>, <Person: 姓名:lisi,年龄:25,性别:man>]>
>>> persons=Person.objects.filter(age__range=(25,29))
>>> persons
<QuerySet [<Person: 姓名:lisi,年龄:25,性别:man>]>
>>>