zoukankan      html  css  js  c++  java
  • Django之F与Q查询

    F查询

    复制代码
    from django.db.models import F,Q
    # 1.查询库存数大于卖出数的书籍
    res = models.Book.objects.filter(kucun__gt=F('maichu'))
    print(res)  #<QuerySet [<Book: Book object>]>
    
    # 2.将所有书的价格提高100
    models.Book.objects.update(price=F('price') + 100)
    """
    帮你获取到表中某个字段对应的值
    """
    复制代码

    Q查询

    Q能够改变查询的条件关系  and or not

    复制代码
    # 查询书的名字是python入门或者价格是1000的书籍
    # res = models.Book.objects.filter(title='水浒传',price=1100)  # and关系
    # res = models.Book.objects.filter(Q(title='python入门'),Q(price=1100))  # 逗号也是and关系
    res = models.Book.objects.filter(Q(title='西游记')|Q(price=1100))  # |是or关系
    # res = models.Book.objects.filter(~Q(title='水浒传'))  # ~是not关系
    print(res)
    print(res.query)
    复制代码

    Q的高阶用法

    q = Q()
    q.connector = 'or' # q对象默认是and关系 可以通过connector改变or
    q.children.append(('title','三国'))
    q.children.append(('price','1100'))
    
    res = models.Book.objects.filter(q)
    print(res)

    补充:

    from django.db.models import F,Q
    
    F  针对自己单表中字段的比较和处理
    models.Book.objects.filter(good__gt=F('comment')*2)
    models.Book.objects.all().update(price=F('price')+1)
    
    Q    &  |  非~
    filter(Q(xx=11)|Q(ss=22)&Q(oo=33))
    filter(Q(Q(xx=11)|Q(ss=22))&Q(oo=33))  &优先级高
    filter(Q(Q(xx=11)|Q(ss=22))&Q(oo=33),name='dd')  
    ```
    
    执行原生sql(了解)
    
    ```
    models.Publish.objects.raw('原生sql')
    
    from django.db import connection
    cursor = connection.cursor()
    cursor.excute(sql,[1,])
    cursor.fetchall()
    ```
    
    展示sql的
    
    ```
    models.Book.objects.filter(good__gt=F('comment')*2)
    from django.db import connection 
    print(connection.queries)
    
    ```
    
    https://www.cnblogs.com/clschao/articles/10439958.html
  • 相关阅读:
    数据库主键生成策略
    弹出窗返回数据实体对象或对象集
    我的家乡话,模糊和清晰的记忆......
    曾经年少
    获取父页面URL的参数对应值及左对齐字符串
    .Net编程规范
    DBdifference
    GridView翻页时保持CheckBox选择状态
    .CS中的javascript
    (转)程序员职业规划
  • 原文地址:https://www.cnblogs.com/wddxx/p/13796386.html
Copyright © 2011-2022 走看看