数据库操作
def create(self, **kwargs):
"""
Create a new object with the given kwargs, saving it to the database
and returning the created object.
"""
obj = self.model(**kwargs)
self._for_write = True
obj.save(force_insert=True, using=self.db)
return obj从代码中可以看出自带了 save操作
返回所有记录组成的模型和对象集合(queryset查询集)
get filter exclude
QuerySet查询集,就相当于一个列表(存放所有项目对象的列表)
对QuerySet查询集进行遍历
Projects.objects.get(id=1)
# 通过.可以获取到具体的内容
Projects.objects.get(id=1).name
Projects.objects.get(id=1).leaderfilter查询返回的是一个列表
Projects.objects.filter(id=1)Projects.objects.filter(leader='zx_94')Projects.objects.filter(leader__contains='zx')使用 leader__contains获取符合条件的查询集「模糊查询」
还有一些其他的操作,可以根据名称或SQL常识进行使用
以 i开头(不是单词的一部分,例如 in, is等)表示「忽略大小写」
exclude反向查询
下面可以获取到 id!=1的内容
Projects.objects.exclude(id=1)查询语句:外键字段__从表的字段名__条件
在 tb_interfaces表中添加一条内容
Projects.objects.filter(interfaces__name='登录接口')通过 interfaces的 name「登录接口」来找到关联表中的具体内容
查看SQL语句
from django.db import connection
print(connection.queries[-1])
{'sql': "SELECT `tb_projects`.`id`, `tb_projects`.`name`, `tb_projects`.`leader`, `tb_projects`.`tester`, `tb_projects`.`programer`, `tb_projects`.`publish_app`, `tb_projects`.`desc` FROM `tb_projects` INNER JOIN `tb_interfaces` ON (`tb_projects`.`id` = `tb_interfaces`.`project_id`) WHERE `tb_interfaces`.`name` = '登录接口' LIMIT 21", 'time': '0.001'}Projects.objects.filter(id__gt=2)
__gt:大于__gte:大于等于__lt:小于__lte:小于等于
以下语句表示查询 leader='zx'或 id=1的内容
Projects.objects.filter(Q(leader='zx') | Q(id=1))Projects.objects.filter(leader='zx', id=1)查询集相当于一个列表,支持列表中的大多数操作(索引,正向切片,for) 查询集是对数据库操作的一种优化 查询集会缓存结果
先获取,后修改,再保存
p = Projects.objects.get(id=1)
p.leader = 'zx'
p.save()获取后,删除
p = Projects.objects.get(id=1)
p.delete()从小到大
Projects.objects.filter(id__gte=3).order_by('name')从大到小
Projects.objects.filter(id__gte=3).order_by('-name')当前一个字段相同,以后一个来排序
Projects.objects.filter(id__gte=3).order_by('name','-publish_app')https://docs.djangoproject.com/en/2.2/
「Tutorials」入门:https://docs.djangoproject.com/en/2.2/intro/
「Topic guides」专题:https://docs.djangoproject.com/en/2.2/topics/
「Reference guides 」接口:https://docs.djangoproject.com/en/2.2/ref/
「How-to guides 」进阶内容:https://docs.djangoproject.com/en/2.2/howto/