Django ORM 과 SQL (2)

BackEnd_Ash.log·2020년 4월 20일
0

너무 길어서 여기서 두번째를 적기로 합니다.

   offset      = int(request.GET.get('offset', 0))
   limit       = int(request.GET.get('limit', 12))
   recipe_info = (Recipe
                  .objects
                  .order_by('id')
                  .values('id',
                          'title',
                          'description',
                          'company',
                          'thumbnail_url',
                          'posting_date'
                          )[offset:offset + limit])

request.GET.get 으로 받고나서 형변환을 한다면

try except 로 잡아줘야 한다.
왜 ???
만약에 이것이 숫자여야 하는데
숫자가 아닌것으로 잡을 지도 모른다 이럴경우 except 로 잡아줘야한다.

except ValueError :
      return HttpResponse(status=400)

이렇게 잡아주도록 합니다.
만약에 무슨에러가 발생할지 모르겠는데 ??하면
unit test 를 하는게 최고겠지만 모르겠다면 ,

except Exception as e:
     print(e)
     return HttpResponse(status=400)

이렇게 출력해서 잡아주는게.. 맞는지 모르겠지만 개인적으로 이렇게라도 무슨에러인지 파악하고 지정해주는것이 좋을것 같습니다

prefetch 역참조 복습

Bundle.objects.prefetch_related('product_set')

이럴경우 봐로 알아볼수 있어야하는데 ,
Bundle 입장에서 Product 가 Bundle 을 바라보고있는 입장 입니다.

Bundle 테이블

class Bundle(models.Model):
    title           = models.CharField(max_length = 100)
    price           = models.CharField(max_length = 50, null = True)
    is_in_promotion = models.BooleanField(default = False)
    
    class Meta:
        db_table = 'bundles'

Product 테이블

class Product(models.Model):
	....
    bundle          = models.ManyToManyField('Bundle', through = 'ProductBundle')
    category        = models.ManyToManyField('Category', through = 'ProductCategory')

    class Meta:
        db_table = 'products'
profile
꾸준함이란 ... ?

0개의 댓글