简书: https://www.jianshu.com/p/8371f89b2dec
CSDN: https://blog.csdn.net/u012052168/article/details/89156021
一、前言
对于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)
如果觉得文章对您还有用,就支付宝扫个红包码,支持一下吧。
参考:https://docs.djangoproject.com/en/2.1/ref/models/querysets/