djangoにおけるFとQ式


F()式
F()オブジェクトを使用すると、モデルフィールドの値を直接参照し、pythonのメモリにインポートするのではなくデータベース操作を実行できます.これにより、一括データ操作を効率的に完了できます.
例を挙げて説明する
  • F()式を使用しない場合、すべての書籍の価格を50元引き上げたい場合は、このように書くことができます.
  • F()式とupdate()法を組み合わせて書籍の価格を修正する
    books = Book.objects.all()
    for book in books:
        book.price += 50
        book.save()
    
  • .
  • F()式を使用せずにnameフィールドとemaiフィールドの値が同じデータ情報
    from django.db.models import F
    books = Book.objects.update(price=F('price')+50)
    
  • をクエリする.
  • F()式を使用してnameフィールドとemaiフィールドの値が同じデータ情報
    authors = Author.objects.all()
    for author in authors:
        if author.name == author.email:
            print(author)
    
  • をクエリーする.
    Q()式
    Q()式は,あるいは|,&,非~などの論理演算を実現できる.
    例を挙げて説明する
  • 書籍id番号1または本名紅楼夢の図書情報
    from django.db.models import F
    authors = Author.objects.filter(name=F("email"))
    
  • を検索する
  • 書籍名三国演義かつ価格98の図書情報
    from django.db.models import Q
    books = Book.objects.filter(Q(id=1) | Q(name='   '))
    
  • を検索する
  • 查询书名不是三国演义的书籍信息
    from django.db.models import Q
    book = Book.objects.filter(Q(name='    ') & Q(price=98))