django开发知识点3

编程入门 行业动态 更新时间:2024-10-06 14:29:44

django开发<a href=https://www.elefans.com/category/jswz/34/1770093.html style=知识点3"/>

django开发知识点3

1、支持链式调用的接口
all
使用频率比较高,相当于SELECT * FROM table 语句,用于查询所有数据。

filter

使用频率比较高,根据条件过滤数据,常用的条件基本上字段等于、不等于、大于、小于。当然,还有其他的,比如能修改成产生LIKE查询的:Model.objects.filter(content__contains="条件")。

exclude

与filter是相反的逻辑

reverse

将QuerySet中的结果倒叙排列

distinct

用来进行去重查询,产生SELECT DISTINCT这样的SQL查询

none

返回空的QuerySet

2、不支持链式调用的接口

get

比如Product.objects.get(id=1)用于查询id为1的文章:如果存在,则直接返回对应的Post实例;如果不存在,则抛出DoesNotExist异常。所以一般情况下,要使用异常捕获处理:

create

用来直接创建一个Model对象,比如product =Product.objects.create(title="一起学习")。

get_or_create

根据条件查找,如果没查找到,就调用create创建。

update_or_create

与get_or_create相同,只是用来做更新操作。

count

用于返回QuerySet有多少条记录,相当于SELECT COUNT(*) FROM table 。

latest

用于返回最新的一条记录,但要在Model的Meta中定义:get_latest_by= <用来排序的字段>。

earliest

同上,返回最早的一条记录。

first

从当前QuerySet记录中获取第一条。

last

同上,获取最后一条。

exists

返回True或者False,在数据库层面执行SELECT (1) AS "a" FROM table LIMIT 1的查询,如果只是需要判断QuerySet是否有数据,用这个接口是最合适的方式。

不要用count或者len(queryset)这样的操作来判断是否存在。相反,如果可以预期接下来会用到QuerySet中的数据,可以考虑使用len(queryset)的方式来做判断,这样可以减少一次DB查询请求。

bulk_create

同create,用来批量创建记录。

in_ bulk

批量查询,接收两个参数id list和filed name。可以通过Post.objects. in_ bulk([1, 2, 3])查询出id为1、2、3的数据,返回结果是字典类型,字典类型的key为查询条件。返回结果示例: {1: <Post 实例1>, 2: <Post实例2>,3:<Post实例3>}。

update

用来根据条件批量更新记录,比如: Product.objects.filter(owner__name='123').update(title='测试更新')。

delete

同update,这个接口是用来根据条件批量删除记录。需要注意的是,和delete都会触发Djiango的signal

values

当我们明确知道只需要返回某个字段的值,不需要Model实例时,用它,用法如下:

title_list = Product.objects.filter(category_id=1).values('title')

返回的结果包含dict的QuerySet,类似这样: <QuerySet [{'title' :xxx},]>

values_list

同values,但是直接返回的是包含tuple的QuerySet:

titles_list = Product.objects.filter(category=1).values_list('title')

返回结果类似: <QuerySet[("标题",)]>

如果只是一个字段的话,可以通过增加flat=True参数,便于我们后续 处理:

title_list = Product.objects.filter(category=1).values_list('title',flat=True)

for title in title__list:

print(title)

个人博客最新博文分享

更多推荐

django开发知识点3

本文发布于:2024-02-27 22:39:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1766401.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:知识点   django

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!