역참조와 리스트 컨프리헨션

예시로 작성한 모델과 뷰파이 (이중 리스트 컨프리헨션 사용하기 위함)

#models.py

class Review(models.Model):
	name = models.Models.CharFiled( )
    	product = models.Models.ForeinKey(User)
        user = models.Models.ForeinKey(Product)

class Image(models.Model):
	product = models.Models.ForeinKey(Product)
	image_url = models.Models.ForeinKey
    
#views.py --> review 정보를 불러오는 view	

class ReviewView(View):
    def get(self, request, product_id):
        reviews = Review.objects.filter(product_id = product_id)
        
        results = [{
            'date'         : review.created_at.strftime('%Y.%m.%d.%a'), #'2021.12.16.Thu'
            'kakao_id'     : review.user.kakao_id,
            'product_name' : review.product.name,
            'content'      : review.content,
            'image_url'    : [i.url for i in review.reviewimage_set.all()]  #--> review테이블이 
            #reviewimage테이블한테 참조 당하고 있음.그래서 역참조 해야함. 방금 뽑은 i라는 객체를 json형태로 반환이 불가능하므로, 그거의 속성값으로 반환해줘야함.
        } for review in reviews ]
            
        return JsonResponse({'message' : results}, status=200)

좋은 웹페이지 즐겨찾기