模型层使用准备
# 1.django自带的sqllite3对时间字段不敏感,所以使用mysql会更常见 # 2.单独测试django某个功能层 """django默认是不可以单独测试py文件的""" 想测试某个py文件(主要是models.py): -1.测试环境1: pycharm提供的python console -2.测试环境2: 使用自带的tests或自己创建 步骤1:拷贝manage.py前四行 步骤2:自己加两行,并调用函数 import django django.setup() """ import os import sys
def main(): os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djangoday05.settings') import django django.setup()
main() """ # 3.查看django的orm底层sql语句 -1. 我们手上是一个QuerySet对象,那么可以直接点query查看SQL语句。 -2. 查看所有orm底层的SQL语句也可以在配置文件添加日志记录
ORM关键字
# ORM查询关键字 1. create() # 创建数据并直接获取当前创建的数据对象 """ res = models.User.objects.create(name='tom',age=24) res = models.User.objects.create(name='liyuu',age=24) """
2. filter() # 根据条件筛选数据,结果是QuertySet [数据对象1,数据对象2] """ res = models.User.objects.filter(name='hanser',age=29) """ 3.first()/last() # QuerySet支持索引取值但是只支持正数,不推荐使用索引取值 """ res = models.User.objects.filter(pk=100)[0] # 数据不存在索引值直接报错 res = models.User.objects.filter(pk=100).first() # 数据不存在不报错而是返回none res = models.User.objects.filter(pk=100).last() res = models.User.objects.filter(pk=1).first() # 数据存在返回一个对象 res = models.User.objects.filter(pk=1).last() """ 4.update # 更新数据 """ res = models.User.objects.filter(id=1).update() """ 5.delete # 删除数据 """ res = models.User.objects.filter().delete() """ 6.all # 查询所有数据 """ res = models.User.objects.all() """ 7.values() # 根据指定字段获取数据,结果是QuerySet [{},{},{},{}] """ res = models.User.objects.all().values('name') res = models.User.objects.filter().values() res = models.User.objects.values() """ 8.values_list() # 根据指定字段获取数据 结果是QuerySet [(),(),(),()] """ res = models.User.objects.all().values_list('name','age') """ 9.distinct() # 去重,主键不一样也不行 """ res = models.User.objects.values('name','age').distinct() """ 10.order_by() # 根据指定条件排序,默认是升序,字段前面加负号就是降序 """ res = models.User.objects.all().order_by('age') print(res) """ 11.get() # 根据条件筛选数据并直接获取到数据对象,一旦条件不存在会直接报错 """ res = models.User.objects.get(pk=1) print(res) res = models.User.objects.get(pk=100, name='jason') print(res) """ 12.exclude() # 取反操作 """ res = models.User.objects.exclude(pk=1) print(res) """ 13.reverse() # 颠倒顺序(被操作的对象必须是已经排过序) """ res = models.User.objects.all() res = models.User.objects.all().order_by('age') res1 = models.User.objects.all().order_by('age').reverse() print(res, res1) """ 14.count() # 统计结果集中数据的个数 """ res = models.User.objects.all().count() print(res) """ 15.exists() # 判断结果集中是否含有数据,如果有则返回True 没有则返回False """ res = models.User.objects.all().exists() print(res) res1 = models.User.objects.filter(pk=100).exists() print(res1) """
标签:06,models,res,模型,django,filter,objects,User From: https://www.cnblogs.com/juzijunjun/p/16983390.html