Django-ORM模型层语法(三)之神奇的双下划线查询

神奇的双下划线查询

User表数据

idnameageregister_time
1steven182002-01-01
2baby202020-12-03
3mark282002-01-02
4kevin382020-12-03
5Stark502020-09-09
settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'orm1',
        "USER":'root',
        'PASSWORD':'123456',
        'HOST':'127.0.0.1',
        'PORT':3306,
        'CHARSET':'utf8',
    }
}

init.py

import pymysql
pymysql.install_as_MySQLdb()

models.py

from django.db import models


# Create your models here.
class User(models.Model):
	name = models.CharField(max_length=32)
	age = models.IntegerField()
	register_time = models.DateField()  # 年月日

	def __str__(self):
		return '对象:%s' % self.name

Terminal

python manege.py makegirations
python manage.py migrate

app01/tests.py

"""
当你只是想测试django中的某一个py文件内容 那么你可以不用书写前后端交互的形式
而是直接写一个测试脚本即可
脚本代码无论是写在应用下的tests.py还是自己单独开设py文件都可以
"""
# 测试环境的准备 去manage.py中拷贝前四行代码 然后自己写两行
import os

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "orm1.settings")
    import django
    django.setup()
    # 在这个代码块的下面就可以测试django里面的单个py文件了
    # 所有的代码都必须等待环境准备完毕之后书写
    from app01 import models

    # 神奇的双下划线查询
    # 1.年龄大于35岁的数据
    res = models.User.objects.filter(age__gt=35)
    print(res)

    # 2.年龄小于35岁的数据
    res = models.User.objects.filter(age__lt=35)
    print(res)

    # 3.年龄大于等于28岁的数据
    res = models.User.objects.filter(age__gte=28)
    print(res)
    # 年龄小于等于20岁的数据
    res = models.User.objects.filter(age__lte=20)
    print(res)

    # 4.年龄是18或20或28
    res = models.User.objects.filter(age__in=[18,20,28])
    print(res)

    # 5.年龄在18到28岁之间的数据
    res = models.User.objects.filter(age__range=[18,28])
    print(res)

    # 6. 查询名字里面含有s的数据 模糊查询(默认区分大小写)
    res = models.User.objects.filter(name__contains='s')
    print(res)
    # 忽略大小写
    res = models.User.objects.filter(name__icontains='s')
    print(res)

    # 7.查询名字以s开头的数据
    res = models.User.objects.filter(name__startswith='s')
    print(res)
    # 查询名字以k结束的数据
    res = models.User.objects.filter(name__endswith='k')
    print(res)

    # 8.查询出注册时间是2020年12月的数据
    res = models.User.objects.filter(register_time__month='12')
    print(res)
    # 查询出注册时间是2002年的数据
    res = models.User.objects.filter(register_time__year='2002')
    print(res)
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值