import os
if __name__ == '__main__':
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'idjango.settings')
import django
django.setup()
from idea import models
# 必会13条
objs = models.User.objects
# 1.all() 查询所有数据
print(objs.all())
# <QuerySet [<User: pear>, <User: apple>, <User: rose>, <User: lili>]>
# 2.filter() 带有过滤条件的查询
print(objs.filter(username='lili'))
# <QuerySet [<User: lili>]>
# 3.get() 直接获取对象,不存在则报错
print(objs.get(pk=4))
# lili
# 4.first()
print(objs.all().first())
# pear
# 5.last()
print(objs.all().last())
# lili
# 6.values() 类似列表嵌套字典
print(objs.values('username', 'age'))
# <QuerySet [{'username': 'pear', 'age': 18} ... {'username': 'lili', 'age': 20}]>
# 7.values_list() 类似列表嵌套元组
print(objs.values_list('username', 'age'))
# <QuerySet [('pear', 18) ... ('lili', 20)]>
# 查看内部的sql语句
# 方式1:QuerySet.query
# 方式2:配置文件
# 8.distinct() 去重
# 筛选结果有主键存在时无法去重,带主键时数据一定不同
print(objs.values('username').distinct())
# < QuerySet[{'name': 'pear'} ... {'name': 'lili'}] >
# 9.order_by 排序
print(objs.order_by('age'))
# '-age' 降序
# <QuerySet [<User: pear>, <User: lili>, <User: rose>, <User: apple>]>
# 10.reverse 反转 必须先排序后才可以反转
print(objs.order_by('age').reverse())
# <QuerySet [<User: apple>, <User: rose>, <User: lili>, <User: pear>]>
# 11.count() 统计数据的个数
print(objs.count())
# 4
# 12.exclude() 排除在外
print(objs.exclude(username='lili'))
# <QuerySet [<User: pear>, <User: apple>, <User: rose>]>
# 13. exists() 是否存在
print(objs.filter(pk=5).exists())
# False
django专栏 search 01.必会基础查询
最新推荐文章于 2022-11-23 18:03:33 发布