Django-17 F对象和Q对象
2021-07-16 本文已影响0人
JuliusL
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不成立