• Django 学习(四)


    F() 的实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段的值。

    之前构造的过滤器都只是将字段值与某个常量做比较,如果想要对两个字段的值做比较,就需要用到 F()。

    F 动态获取对象字段的值,可以进行运算。

    Django 支持 F() 对象之间以及 F() 对象和常数之间的加减乘除和取余的操作。

    修改操作(update)也可以使用 F() 函数。

    查询工资大于年龄的人:

    from django.db.models import F
    ...
    book=models.Emp.objects.filter(salary__gt=F("age")).values("name","age")
    ...
    

    之前构造的过滤器里的多个条件的关系都是 and,如果需要执行更复杂的查询(例如 or 语句),就可以使用 Q 。

    Q 对象可以使用 & | ~ (与 或 非)操作符进行组合。

    优先级从高到低:~ & |。

    可以混合使用 Q 对象和关键字参数,Q 对象和关键字参数是用"and"拼在一起的(即将逗号看成 and ),但是 Q 对象必须位于所有关键字参数的前面。

    查询价格大于 350 或者名称以菜开头的书籍的名称和价格。

    ...
    res=models.Book.objects.filter(Q(price__gt=350)|Q(title__startswith="菜")).values("title","price")
    print(res)
    ...
    

    Q 对象和关键字混合使用,Q 对象要在所有关键字的前面

  • 相关阅读:
    [GXOI/GZOI2019] 旧词
    [HDU6756] Finding a MEX
    [洛谷P5110] 块速递推
    [CF739C] Alyona and towers
    1349. 修理牛棚
    L2-028 秀恩爱分得快 (25 分)
    L2-009 抢红包 (25 分)
    L1-043 阅览室 (20 分)
    2020年天梯赛-模拟赛 L1-6 检查密码 (15 分)
    L1-046 整除光棍 (20 分)
  • 原文地址:https://www.cnblogs.com/richmanwu/p/13650328.html
Copyright © 2020-2023  润新知