TIL 18. Django method_annotate()


Today's topic


👉 アノテーション()メソッドの使用方法


今回の記事では、プロジェクトを行う際に知った方法の1つである注釈方法についてまとめます.

👉 コメント()を使用する場合:


プロジェクトを行う場合は、Productというclassテーブル内でReviewコンテンツを平均評価する必要があります.したがって、コメント()を使用して、プロダクトモデルで仮想変数を使用してレビューを関連付けます.
products = Product.objects.filter(q)\
		          .annotate(reviews_count=Count('review'))\
                          .annotate(average_rating=Avg('review__rating'))\
                          .values("id", "name", "author", "thumbnail_image_url", "date_published", "average_rating", "head_description", "detail_description1", "detail_description2")\
                          .distinct()
result = [{
            "id"                  : product['id'],      
            "name"                : product['name'],
            "author"              : product['author'],
            "image"               : product['thumbnail_image_url'],
            "date_published"      : product['date_published'],
            "head_description"    : product['head_description'],
            "detail_description1" : product['detail_description1'],
            "detail_description2" : product['detail_description2'],
            "rating"              : round(float(product['average_rating']), 1) if product['average_rating'] else 0
        } for product in products]

重要事項

from django.db.models import Q, Avg, Count
視点.pyファイルで宣言する必要があります.
前述したように、コメント()を使用すると、製品を使用して宣言した変数を「average rating」にロードできます.

My opinion


ProductとReviewの格付けを結びつけると、最初はどうやって近づくか分かりませんでした.コメントを使用すると、製品とビューをリンクして、必要なデータを適用できます.これらの方法を一つ一つマスターしなければなりません!!