Python - Django - ORM 双下划线

id 字段:

id__lt:id 小于,id__gt:id 大于

import os

if __name__ == '__main__':
    # 加载 Django 项目的配置信息
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite2.settings")
    # 导入 Django,并启动 Django 项目
    import django
    django.setup()

    from app01 import models

    ret = models.Human.objects.filter(id__gt=1, id__lt=4)  # 查询 1<id<4 的数据
    print(ret)

运行结果:

id__in=[]:获取所有 id 为该列表元素的数据

import os

if __name__ == '__main__':
    # 加载 Django 项目的配置信息
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite2.settings")
    # 导入 Django,并启动 Django 项目
    import django
    django.setup()

    from app01 import models

    ret = models.Human.objects.filter(id__in=[1, 3, 4])  # 查询 id 为 1、3、4 的数据
    print(ret)

运行结果:

 id__range=[]:获取 id 范围的数据

import os

if __name__ == '__main__':
    # 加载 Django 项目的配置信息
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite2.settings")
    # 导入 Django,并启动 Django 项目
    import django
    django.setup()

    from app01 import models

    ret = models.Human.objects.filter(id__range=[2, 4])  # 获取 id 为 2-4 的数据
    print(ret)

运行结果:

 

字符串字段:

字段名__contains:获取字段中含有指定字符串的数据

import os

if __name__ == '__main__':
    # 加载 Django 项目的配置信息
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite2.settings")
    # 导入 Django,并启动 Django 项目
    import django
    django.setup()

    from app01 import models

    ret = models.Human.objects.filter(name__contains="ac")  # 获取 name 字段包含 ac 的数据
    print(ret)

运行结果:

字段名__icontains:获取字段中含有指定字符串的数据,大小写不敏感

import os

if __name__ == '__main__':
    # 加载 Django 项目的配置信息
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite2.settings")
    # 导入 Django,并启动 Django 项目
    import django
    django.setup()

    from app01 import models

    ret = models.Human.objects.filter(name__icontains="Ac")  # 获取包含 name 字段包含 Ac 的数据(大小写不敏感)
    print(ret)

运行结果:

字段名__startswith:获取字段中以指定字符串开头的数据

字段名__istartswith:获取字段中以指定字符串开头的数据,大小写不敏感

import os

if __name__ == '__main__':
    # 加载 Django 项目的配置信息
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite2.settings")
    # 导入 Django,并启动 Django 项目
    import django
    django.setup()

    from app01 import models

    ret = models.Human.objects.filter(name__startswith="Ja")  # 获取 name 字段中以 Ja 开头的数据
    print(ret)
    ret = models.Human.objects.filter(name__istartswith="j")  # 获取 name 字段中以 j 开头的数据,忽略大小写
    print(ret)

运行结果:

字段名__endswith:获取字段中以指定字符串结尾的数据

字段名__iendswith:获取字段中以指定字符串结尾的数据,大小写不敏感

import os

if __name__ == '__main__':
    # 加载 Django 项目的配置信息
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite2.settings")
    # 导入 Django,并启动 Django 项目
    import django
    django.setup()

    from app01 import models

    ret = models.Human.objects.filter(name__endswith="m")  # 获取 name 字段中以 m 结尾的数据
    print(ret)
    ret = models.Human.objects.filter(name__iendswith="Ne")  # 获取 name 字段中以 Ne 结尾的数据,大小写不敏感
    print(ret)

运行结果:

 

date 字段:

date字段名_year:获取该 date 字段中符合 year 条件的数据

import os

if __name__ == '__main__':
    # 加载 Django 项目的配置信息
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite2.settings")
    # 导入 Django,并启动 Django 项目
    import django
    django.setup()

    from app01 import models

    ret = models.Human.objects.filter(birthday__year=2005)  # 获取 birthday 字段中 year 为 2005 的数据
    print(ret)

运行结果:

date字段名_month:获取该 date 字段中符合 month 条件的数据

import os

if __name__ == '__main__':
    # 加载 Django 项目的配置信息
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite2.settings")
    # 导入 Django,并启动 Django 项目
    import django
    django.setup()

    from app01 import models

    ret = models.Human.objects.filter(birthday__month=8)  # 获取 birthday 字段中 month 为 8 的数据
    print(ret)

运行结果:

date字段名_day:获取该 date 字段中符合 day 条件的数据

import os

if __name__ == '__main__':
    # 加载 Django 项目的配置信息
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite2.settings")
    # 导入 Django,并启动 Django 项目
    import django
    django.setup()

    from app01 import models

    ret = models.Human.objects.filter(birthday__day=15)  # 获取 birthday 字段中 day 为 15 的数据
    print(ret)

运行结果:

 

posted @ 2019-08-03 19:56  Sch01aR#  阅读(630)  评论(0编辑  收藏  举报