Django-17 F对象和Q对象 F对象 Q对象

F对象

  • 一个F对象代表数据库中某条记录的字段的信息
  • 作用
    • 解决资源竞争问题
    • 通常是对数据库中的字段值在不获取的情况下进行操作
    • 用于类属性(字段)之间的比较
  • 语法
from django.db.models import F
F('列名')
  • 示例2
    对数据库中两个字段值进行比较,列出哪儿些书的零售价高于定价?
from django.db.models import F
from bookstore.models import Book
books = Book.objects.filter(market_price__gt=F('price'))
# SELECT * FROM bookstore_book WHERE book_store.market_price > bookstore.price

Q对象

当前获取查询结果集使用复杂的逻辑或|、逻辑非~等操作时可以借助Q对象进行操作
如:想找出定价低于20元 或 清华大学出版社的全部书,可以写成

from django.db.models import Q
Book.objects.filter(Q(price__lt=20)|Q(pub="清华大学出版社"))

Q(条件1)|Q(条件2) 条件1成立或条件2成立
Q(条件1)&Q(条件2) 条件1和条件2同时成立
Q(条件1)&~Q(条件2) 条件1成立且条件2不成立

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章