F()式
F()オブジェクトを使用すると、モデルフィールドの値を直接参照し、それらをpythonのメモリにインポートして操作を実行する代わりにデータベース操作を実行できます。これにより、バッチデータ操作を効率的に完了することができます。
例えば
- F()式を使わずに、すべての本の価格を50元上げたい場合は、次のようなコードを書くことができます。
books = Book.objects.all() for book in books: book.price += 50 book.save()
- F()式をupdate()メソッドと組み合わせて使用して、書籍の価格を変更します
from django.db.models import F books = Book.objects.update(price=F('price')+50)
- 名前フィールドとemaiフィールドに同じ値を持つデータ情報をクエリするためにF()式を使用しないでください
authors = Author.objects.all() for author in authors: if author.name == author.email: print(author)
- 使用F()クエリに式を中に同じ値を持つデータ情報名称欄及びEMAIフィールド
from django.db.models import F authors = Author.objects.filter(name=F("email"))
Q()式
Q()式は、OR、&、NOT〜などの論理演算を実現できます。
例えば
- クエリブックのID番号は1またはタイトルは赤い部屋の夢書籍情報
from django.db.models import Q books = Book.objects.filter(Q(id=1) | Q(name='红楼梦'))
- クエリブックのタイトルは3つの王国そして価格は98書籍情報
from django.db.models import Q book = Book.objects.filter(Q(name='三国演义') & Q(price=98))
- クエリのタイトルは3つの王国書籍情報
from django.db.models import Q books = Book.objects.filter(~Q(name='三国演义'))