Django:查询基础语法
class NewsInfo(models.Model): """新闻表""" title = models.CharField(max_length=100, help_text='新闻标题', verbose_name='新闻标题', blank=True, default='') content = models.TextField(help_text='内容', verbose_name='内容', blank=True, default='') b_date = models.DateField(help_text='日期', verbose_name='日期') read = models.IntegerField(help_text='阅读量', verbose_name='阅读量', blank=True, default=0) good = models.IntegerField(help_text='点赞数量', verbose_name='点赞数量', blank=True, default=0) class TypeInfo(models.Model): """新闻类型""" type = models.CharField(max_length=20, help_text='新闻类型', verbose_name='新闻类型')
python manage.py makemigrations
3、执行迁移
python manage.py migrate
4、登录Django后台,添加一些练习数据
函数名 | 功能 | 返回值 | 说明 |
---|---|---|---|
get | 返回表中满足条件的一条且只能有一条数据。 | 返回值是一个模型类对象。 | 参数中写查询条件。1) 如果查到多条数据,则抛异常MultipleObjectsReturned。2)查询不到数据,则抛异常:DoesNotExist。 |
all | 返回模型类对应表格中的所有数据。 | 返回值是QuerySet类型 | 查询集 |
filter | 返回满足条件的数据。 | 返回值是QuerySet类型 | 参数写查询条件。 |
exclude | 返回不满足条件的数据。 | 返回值是QuerySet类型 | 参数写查询条件。 |
order_by | 对查询结果进行排序。 | 返回值是QuerySet类型 | 参数中写根据哪些字段进行排序。 |
Django的交互调试环境
启动项目,进入交互环境
python manage.py shell
导入models模块
from news.models import *
# 查询id为3的新闻信息 NewsInfo.objects.get(id=3)
# 查询所有新闻数据 NewsInfo.objects.all()
# 查询新闻阅读量为9999的新闻数据: NewsInfo.objects.filter(read=9999)
#查询所有id不等于1的新闻数据 NewsInfo.objects.exclude(id=1)
#查询所有新闻数据并且按id进行排序(从小到大) NewsInfo.objects.all().order_by('id') #查询所有新闻数据并且按id进行排序(从大到小) NewsInfo.objects.all().order_by('-id')
三、
查询集特性
- 惰性查询:只有在实际使用查询集中的数据的时候才会发生对数据库的真正查询
- 缓存:当使用的是同一个查询集时,第一次使用的时候会发生实际数据库的查询,然后把结果缓存起来,之后再使用这个查询集时,使用的是缓存中的结果
- 索引取值
TypeInfo.objects.all()[0]
- 切片操作
TypeInfo.objects.all()[0:3]
#条件语法格式 模型类.objects.filter(模型类属性名__条件名=值)
# 查询名称里包含'娱乐’的新闻类别。 TypeInfo.objects.filter(new_type__contains='娱乐')
# 查询以'国'开头的新闻类别 TypeInfo.objects.filter(new_type__startswith='国')
结尾:endswith
# 查询以'资讯'结尾的新闻类别 TypeInfo.objects.filter(new_type__endswith='资讯')
范围查询:in
# 查询id为1或3或5的新闻类别 TypeInfo.objects.filter(id__in=[1,3,5])
# Demo:查询id大于3的数据 TypeInfo.objects.filter(id__gt=3)
小于:lt
# Demo:查询id小于3的数据 TypeInfo.objects.filter(id__lt=3)
#Demo:查询id大于等于5的数据 TypeInfo.objects.filter(id__gte=5)
# Demo:查询id小于等于3的数据 TypeInfo.objects.filter(id__lte=3)
六、
isnull值为True:表示查询为空的数据,值为False查询不为空的数据
Demo:查询标题不为空的新闻.
NewsInfo.objects.filter(title__isnull=False)
知道、想到、做到、得到
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2021-08-19 Vue|退出功能