Djangoのクエリサイズを最適化する


問題


プロジェクトが成長すると、時間とともに、より多くのフィールドを持つモデルを開始することが可能です.
何がその結果ですか?あなたが30以上のフィールドを持つモデルを持っていて、データベースからオブジェクトまたはオブジェクトのリストを取得しようとしているならばqueryset 本当に重いです.
そして、あなたは間違いなくすべてのフィールドを必要としない可能性があります.

どのようにクエリを最適化するには?


ジャンゴが提供するonly() を返すメソッドqueryset フィールドのリストとonly(*args) .
という.
以下に例を示します:
from django.db import models


class User(models.Model):
    name = models.CharField(max_length=50)
    email = models.EmailField(max_length=254)
    bio = models.CharField(max_length=50)

    def __str__(self) -> str:
        return "%s (%s)" % (self.name,
            ", ".join(profile.first_name for profile in self.profile_set.all()))
そしてここにqueryset :
users = User.objects.only('name', 'email').all()
また、defer() 方法--反対only -- これは、特定のクエリで使用したくないフィールドを削除するために使用できます.
これに続いて、これらの2つのクエリは、User テーブルのみname , email , and bio フィールド.
users = User.objects.only('name', 'email').all()

users = User.objects.defer('bio').all()
記事投稿bloggu.io . 無料でお試しください.