QuerySet详解一

简书: 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)

如果觉得文章对您还有用,就支付宝扫个红包码,支持一下吧。
3BDCAFBAB4D9360B3AF7A6BC7E7A0CC2.jpg

参考:https://docs.djangoproject.com/en/2.1/ref/models/querysets/

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django中,QuerySet和Object是两个不同的概念。 1. QuerySet QuerySetDjango中的一个概念,它表示数据库操作的结果集合。QuerySet可以像列表一样进行迭代、切片等操作,但是它并不是真正的列表。当你执行一个查询操作时,Django会返回一个QuerySet对象,这个对象包含了一些查询结果的方法。这些方法可以用来进行进一步的过滤、排序、切片等操作。QuerySet是惰性的,这意味着它只有在需要的时候才会执行查询,这有助于提高性能。 例如,以下代码创建了一个QuerySet对象,它包含了所有年龄大于18岁的用户: ``` from django.contrib.auth.models import User users = User.objects.filter(age__gt=18) ``` 2. Object Object指的是Django模型中的一个实例。一个模型是一个数据库表的抽象,它定义了表的结构和字段,每个实例则代表了表中的一行数据。你可以使用ORM API来创建、更新、删除和查询模型实例。 例如,以下代码创建了一个User模型的实例: ``` from django.contrib.auth.models import User user = User.objects.create(username='john') user.first_name = 'John' user.last_name = 'Doe' user.save() ``` 在这个例子中,我们首先创建了一个User实例,然后通过修改它的属性来更新它,最后使用save()方法将更改保存到数据库中。 总结 QuerySet和Object是Django中的两个不同的概念,它们分别代表了数据库操作的结果集合和模型中的一个实例。QuerySet是一个惰性的对象,它包含了一些查询结果的方法,可以用来进行进一步的过滤、排序、切片等操作。Object则代表了一个模型实例,你可以使用ORM API来创建、更新、删除和查询它。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值