QuerySet详解一

一、前言 对于QuerySet中一些常用方法我们已经很熟悉了,比如get、filter、exclude、delete,接下来就深挖一下QuerySet的其他方法。
二、定义model

class Wiki(models.Model): name = models.CharField(max_length=100) content = models.TextField() def __str__(self): return self.name

三、QuerySet 1.新建对象--create()
Wiki.objects.create()

2.获取对象
Wiki.objects.all() Wiki.objects.all()[:10] Wiki.objects.all().reverse()[:2] Wiki.objects.get(name='me')# 获取name为me的对象,只能获取一个,如果有重名对象会报错 Wiki.objects. filter(name='me')# 获取name为me的对象,可以是多个 Wiki.objects. filter(name__iexact='me')# 获取name为me的对象,但不区分大小写 Wiki.objects. filter(name__icontains='me')# 获取name中包含me的对象 Wiki.objects.filter(name__regex = '^abc')# 正则表达式查询 Wiki.objects.exclude(name__contains = 'me')# 排除包含me的对象 Wiki.objects.filter(name__contains = 'me').exclude(content = 'hello')# 找出name含有me但content不是hello的对象

3.删除对象--delete()
Wiki.objects.all().delete()# 删除全局数据 Wiki.objects.get(name='me').delete()# 删除name为me的对象 Wiki.objects.filter(name__contains='me').delete()# 删除name中包含me的对象

4.更新
(1)批量更新
Wiki.objects.filter(name__contains = 'abc').update(name = 'def')

(2)单个更新
适用于get()、get_or_create()、update_or_create() w = Wiki.objects.get(name = 'me') w.name = 'she' w.content = 'my name is she.' w.save()# 切记保存 # 将name为me的对象更新为she

5.排序
Wiki.objects.all().order_by('name') Wiki.objects.all().order_by('-name')# 倒序 Wiki.objects.all().order_by('-name','id')# 链式排序

6.迭代
items=Wiki.objects.all() for each in items: print(each.name)

【QuerySet详解一】如果觉得文章对您还有用,就支付宝扫个红包码,支持一下吧。

QuerySet详解一
文章图片
3BDCAFBAB4D9360B3AF7A6BC7E7A0CC2.jpg 参考:https://docs.djangoproject.com/en/2.1/ref/models/querysets/

    推荐阅读