天天看點

Django—— F、Q查詢

已有表

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
  • 或者這樣