≪補助項目|Helpers|emdw≫:≪詳細|Details|emdw≫ページのロード機能の実装


私が第2のプロジェクトで実施する機能は、좋아요 기능상세페이지 정보 불러오기 기능리스트페이지 정보 불러오기 기능を含む.
このリリースは상세페이지 정보GET APIに対して作成されます.
私が作成したコードは次のとおりです.
class ProductView(View):
    @AuthorizeProduct
    def get(self,request,course_id):
        try:
            course=Course.objects.get(id=course_id)
            stats=course.coursestat_set.all().select_related('stat')
            media = course.media_set.get()
            
            results={
                "course_id"      : course.id,
                "sub_category"   : course.sub_category.name,
                "course_name"    : course.name,
                "thumbnail_url"  : course.thumbnail_image_url,
                "page_image"     : media.url,
                "course_level"    : course.level.level,
                "price"          : course.price,
                "payment_period" : course.payment_period,
                "discount_rate"  : "30%",
                "discount_price" : course.price / 3,
                "course_like"    : course.like_set.count(),
                "course_stat"   : [{"stat_name" : c_stat.stat.name,"score" : c_stat.score} for c_stat in stats],
                "is_like_True"   : True if course.like_set.filter(user_id=request.user).exists() else False,
                "user_name"      : course.user.name,
                "profile_image"  : course.user.profile_image
               }
                

            return JsonResponse({"results" : results}, status=200)

        except Course.DoesNotExist:
            return JsonResponse({"message" : "INVALID_COURSE"},status=401)
これは、ロードするcourse idがpaht parameterであることを受信し、courseに対応する情報をロードするAPIである.
私たちは最初のプロジェクトでも同様の機能を実施したので、あまり困難はありません.
"course_stat"   : [{"stat_name" : c_stat.stat.name,"score" : c_stat.score} for c_stat in stats]
初めて情報を読み込むとき
stats=course.coursestat_set.all()
courestat表の情報だけを書きたかったのですが、もしそうならstatについての情報を取得するには、データベースが常に移動する必要があります.
stats=course.coursestat_set.all().select_related('stat')
select_relatedを使用してstatの情報を入力し、常に移動しないようにデータベースを作成します.