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の格付けを結びつけると、最初はどうやって近づくか分かりませんでした.コメントを使用すると、製品とビューをリンクして、必要なデータを適用できます.これらの方法を一つ一つマスターしなければなりません!!
Reference
この問題について(TIL 18. Django method_annotate()), 我々は、より多くの情報をここで見つけました https://velog.io/@yg910524/TIL-17.-Django-methodannotateテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol