djangoのF式とQ式

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()式はORNOT〜などの論理演算を実現できます。

例えば

  • クエリブックの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='三国演义'))
    

おすすめ

転載: blog.csdn.net/weixin_44604586/article/details/112423263