已有表
from django.db.models import Model, F, Q
class Goods(Model):
name = CharField(max_length=32, verbose_name='产品名称')
surplus = IntegerField(verbose_name='余量')
sales = IntegerField(verbose_name="销量")
total = IntegerField(verbose_name="总量")
已有数据
id | name | surplus | sales | total |
1 | 商品A | 1 | 1 | 2 |
2 | 商品B | 1 | 1 |
3 | 商品C | 1 | 1 |
4 | 商品D | 3 |
F查询
根据同一条数据中两个值的对比查询
- 例: 查询余量和销量相同的商品, 需要查到 商品A
- 查询余量小于销量的商品, 需要查到 商品C
- F查询还可以在查询中进行计算
- 查询余量加销量等于总量的商品, 需要查到 商品A B C
- F表达式功能还有很多,这里只是总结了一些用到的查询方法,其余功能可以参考官方文档:Django—F表达式
Q查询
Django查询的 or 操作
- 例: 查询总量为2, 或者总量为3的商品, 需要查到商品A和商品D
~Q 不等于
- 例: 查询总量不等于3的商品, 需要查到 商品A B C
F查询和Q查询混合使用
- 例: 查询余量加销量不等于总量的商品, 需要查到商品D
- 或者这样