Django ORM相关操作(2)

版权声明:如需发表此文章,请附带转载标志或原地址链接,谢谢合作 https://blog.csdn.net/weixin_38091140/article/details/84138490

今天就讲讲关于双下划线的操作,这是第二篇关于orm相关操作的文章,还想看请往上翻第一篇。

# -*- coding: utf-8 -*-
# @Time    : 2018/11/15 19:26
# @Author  : lh
# @Email   : .com
# @File    : orm_test.py
# @Software: PyCharm

"""
ORM小总结
前面讲解了如何在一个python脚本或者文件中假装Django项目的配置和变量信息
"""
import os

if __name__ == '__main__':
    # 加载Django项目的配置信息
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Django_test1.settings")

    # 导入Django项目,并且启动项目
    import django
    django.setup()

    # 导入你需要的models
    from users import models


    # # 使用.all()方法进行查询所有的书籍
    # print('.all()'.center(100, '#'))
    # ret = models.Books.objects.all()
    # print(ret)
    #
    # #使用.filter()方法进行筛选查询
    # print('.filter()'.center(100, '#'))
    # ret = models.Books.objects.filter(id=1) # 使用filter() 比使用get()方法要好,如果数据不存在就返回空,不会报错
    # print(ret)
    #
    # # 使用exclude()方法进行查询,他返回与所给筛选条件不匹配的对象
    # print('.exclude()'.center(100, '#'))
    # ret = models.Books.objects.exclude(id=1)
    # print(ret)
    #
    # # 使用values()方法进行查询, 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列
    # print('.values()'.center(100, '#'))
    # ret = models.Books.objects.values() #如果返回空的字段,默认返回所有的数据。也可以加字段(.values('name'))
    # print(ret)
    #
    # print("values_list".center(100, "#"))
    # # # values_list 返回一个QuerySet对象,里面都是元祖。 不写字段名,默认查询所有字段
    # ret = models.Books.objects.values_list()
    # print(ret)
    #
    # print("count".center(100, "*"))
    # # # count 返回QuerySet中对象的数量
    # ret = models.Books.objects.all().count()
    # print(ret)
    #
    # print("first".center(100, "*"))
    # # # first 返回QuerySet中第一个对象
    # ret = models.Books.objects.all().first()
    # print(ret)
    #
    # print("last".center(100, "*"))
    # # # last 返回QuerySet中最后一个对象
    # ret = models.Books.objects.all().last()
    # print(ret)
    #
    # print("exists".center(100, "*"))
    # # # exists 判断表里有没有数据
    # ret = models.Books.objects.exists()
    # print(ret)

    # 双下划綫查询
    ret = models.Author.objects.filter(id__gt=1 , id__lt=10)  # 获取id大于1而且小于10的值
    print(ret)

    print('id__in'.center(100, '!'))
    ret = models.Author.objects.filter(id__in=[6, 7, 22])  # 获取id为6,7,22的值
    print(ret)

    ret = models.Author.objects.filter(name__contains='小')  # 获取名字字段包含小的值
    print(ret)

    ret = models.Author.objects.filter(id__range=[1, 10])  # 获取id范围1~10的所有值,相当于sql的bettwen and
    print(ret)














输出结果:

猜你喜欢

转载自blog.csdn.net/weixin_38091140/article/details/84138490