美文网首页
Django_字段条件查询 和 跨关系查询

Django_字段条件查询 和 跨关系查询

作者: tzktzk1 | 来源:发表于2023-12-03 18:43 被阅读0次

字段条件查询

字段查询是指如何指定SQL WHERE子句的内容。它们用作QuerySet的filter(), exclude()和get()方法的关键字参数。
其基本格式是:field__lookuptype=value,注意其中是双下划线。
默认查找类型为exact(精确匹配)。
lookuptype的类型有:
Django的数据库API支持20多种查询类型,下表列出了所有的字段查询参数:

字段名         说明
exact       精确匹配
iexact      不区分大小写的精确匹配
contains    包含匹配
icontains   不区分大小写的包含匹配
in          在..之内的匹配
gt          大于
gte         大于等于
lt          小于
lte         小于等于
startswith  从开头匹配
istartswith 不区分大小写从开头匹配
endswith    从结尾处匹配
iendswith   不区分大小写从结尾处匹配
range       范围匹配
date        日期匹配
year        年份
iso_year    以ISO 8601标准确定的年份
month       月份
day         日期
week        第几周
week_day    周几
iso_week_day 以ISO 8601标准确定的星期几
quarter     季度
time        时间
hour        小时
minute      分钟
second      秒
regex       区分大小写的正则匹配
iregex      不区分大小写的正则匹配

案例:

#字段条件查询
class TestFieldQuery(TestCase):
    def setUp(self) -> None:
        req1 = Request.objects.create(method=1,url='/mgr/course/',data={"name":"小明","age":16,"address":"nanjing"})
        req2 = Request.objects.create(method=1,url='/mgr/teacher/',data={"name":"小刚","age":18,"address":"beijing"})
        req3 = Request.objects.create(method=1,url='/mgr/course/',data={"name":"小明","age":16,"address":"nanjing"})

    def test_iquery(self):
        req = Request.objects.all().first()
        print(req)
        # 测试修改--整体
        print('************************************')
        # 字段条件查询的语法是:字段__条件名
        print(Request.objects.filter(url__iexact='/MGR/course/'))
        # 包含模式
        print(Request.objects.filter(url__contains='course/'))

    def test_in_query(self):
        #
        print(Request.objects.filter(url__in=['/mgr/course/']))

执行测试

python manage.py test sqtp.tests.TestFieldQuery

跨关系查询

Django提供了强大并且直观的方式解决跨越关联的查询,它在后台自动执行包含JOIN的SQL语句。要跨越某个关联,只需使用关联的模型字段名称,并使用双下划线分隔,直至你想要的字段(可以链式跨越,无限跨度).
例如
查找标签是xxx的用例

res1=Case.objects.filter(tags__name='smoketest')

案例:

#跨关系查询
class TestOverRelations(TestCase):
    def setUp(self) -> None:
        # 创建用例
        config1 = Config.objects.create(name='case001',base_url='http://localhost')
        config2 = Config.objects.create(name='case002',base_url='http://localhost')
        self.case1 = Case.objects.create(config=config1)
        self.case2 = Case.objects.create(config=config2)

    def test_step_request(self):
        # 准备测试数据 步骤和请求
        step1 = Step.objects.create(belong_case=self.case1,name='step1')
        step2= Step.objects.create(belong_case=self.case1,name='step2')
        step3 = Step.objects.create(belong_case=self.case2,name='step3')
        step4 = Step.objects.create(belong_case=self.case2,name='step4')

        req1 = Request.objects.create(method=1,url='/mgr/teacher1/',data={"name":"小刚","age":18,"address":"beijing"},step=step1)
        req2 = Request.objects.create(method=2,url='/mgr/teacher2/',data={"name":"小刚","age":18,"address":"beijing"},step=step2)
        req3 = Request.objects.create(method=3,url='/mgr/teacher3/',data={"name":"小刚","age":18,"address":"beijing"},step=step3)
        req4 = Request.objects.create(method=1,url='/mgr/teacher4/',data={"name":"小刚","age":18,"address":"beijing"},step=step4)

        print(req1.step.belong_case) #链式语法
        # 跨关系查询的语法: 字段__关联字段
        # print(Request.objects.filter(step__belong_case=self.case2))
        print(Request.objects.filter(step__belong_case__config__name='case001').filter(url__contains='teacher2'))

执行测试

python manage.py test sqtp.tests.TestOverRelations

相关文章

  • ElasticSearch高级查询

    子条件查询 子条件查询指特定字段查询所指特定值 全文本查询 全文本查询针对文本类型数据 字段级别查询 针对结构化数...

  • MySQL查询数据

    [toc] 单表查询: 查询条件列表 查询所有字段 查询指定字段: 查询指定记录: 带 in关键字的查询 如果us...

  • 2-1,数据库的单表查询,多表查询

    单表查询(select) 不加条件的查询: 1,查询特定字段 语法 select<字段1,字段2,......>f...

  • 数据库DQL

    基础查询 指定字段查询 指定字段组合不重复记录 条件查询 where后面可以接的条件 举例 结果集排序 多字段排序...

  • ElasticSearch第六篇:高级查询

    子条件查询:特定字段查询所指特定值复合条件查询以一定的逻辑组合子条件查询 子条件查询 Query context:...

  • SQL之更删改查

    查询 单表查询 查询所有字段 查询指定字段 WHERE条件查询 下面的运算符可在 WHERE 子句中使用: 去重复...

  • orm查询操作

    单表查询操作 外键的跨表查询 正向查询(在有外键字段的表向没有的表查询) 反向查询(没有外键的字段向有外键字段的表...

  • DQL:数据查询语言(单表)

    1.查询一张表的所有字段: 2.查询指定字段: 3.like(模糊查询) 4.where(条件查询) 5.字段控制...

  • SQL基本语句

    查询语句:select select 字段1,字段2,字段3....字段nfrom 表名where 查询条件ord...

  • 常用sql语句

    数据的准备 查询所有字段 查询指定字段 使用 as 给字段起别名 通过 as 给表起别名 消除重复行 条件查询 逻...

网友评论

      本文标题:Django_字段条件查询 和 跨关系查询

      本文链接:https://www.haomeiwen.com/subject/jwxlgdtx.html