개발자 블로그

[django] 오늘의 공부 정리 0620 본문

Django/오늘의 공부

[django] 오늘의 공부 정리 0620

hayongwoon 2022. 6. 20. 22:10
  1. product 앱에서 <작성자, 썸네일, 상품 설명, 등록일자, 노출 종료 일자, 가격, 수정 일자, 활성화 여부>가 포함된 product 테이블을 생성해주세요
  2. django serializer를 사용해 validate / create / update 하는 기능을 구현해주세요
    1. custom validation 기능을 사용해 노출 종료 일자가 현재보다 더 이전 시점이라면 상품을 등록할 수 없도록 해주세요
    2. custom creator 기능을 사용해 상품 설명의 마지막에 “<등록 일자>에 등록된 상품입니다.” 라는 문구를 추가해주세요
    3. custom update 기능을 사용해 상품이 update 됐을 때 상품 설명의 가장 첫줄에 “<수정 일자>에 수정되었습니다.” 라는 문구를 추가해주세요
  3. product 앱에서 <작성자, 상품, 내용, 평점, 작성일>을 담고 있는 review 테이블을 만들어주세요
  4. 현재 날짜를 기준으로, 노출 종료 날짜가 지나지 않았고 활성화 여부가 True이거나 로그인 한 사용자가 등록 한 상품들의 정보를 serializer를 사용해 리턴해주세요
  5. 4번 상품 정보를 리턴 할 때 상품에 달린 review와 평균 점수를 함께 리턴해주세요
    1. 평균 점수는 (리뷰 평점의 합/리뷰 갯수)로 구해주세요
    2. 작성 된 리뷰는 모두 return하는 것이 아닌, 가장 최근 리뷰 1개만 리턴해주세요
  6. 로그인 하지 않은 사용자는 상품 조회만 가능하고, 회원가입 이후 3일 이상 지난 사용자만 상품을 등록 할 수 있도록 권한을 설정해주세요

 

is_active = models.bloon~~~(default=True)에서 저장 되는 값은 False가 되는 문제

model이 생성 될 때 defaul=True와 같이 사용자가 따로 입력을 안해도 생성이 될 때, True로 저장이 되려면 시리얼라이즈에는 해당 필드를 가져오면 안 된다. 만약 "__all__"이라고 필드를 설정하고 유저의 입력에는 해당 필드를 입력 안하면 디비에 저장이 될 때, 시리얼라이즈를 통해 저장이 되므로 필드는 False를 아무것도 아닌 값을 가져왔으므로 해당 필드는 False를 저장하게 됨. 따라서 Create 관련 시리얼라이즈는 받아야하는 값들만 필드로 설정해줘야한다. 

 

django 디비 최적화 시 병목 일어나는 부분 찾는 방법

setting에 LOGGING 설정 추가하면 장고에서 발생하는 모든 sql 쿼리문과 시간을 출력시켜줌. 해당 쿼리문과 시간이 많이 잡아 먹는 부분을 확인 후 어디서 병목이 생기는지 확인할 수 있고 찾아서 추후 리펙터링하면 좋음.

 

 

 

'Django > 오늘의 공부' 카테고리의 다른 글

Timezone Setting  (0) 2022.07.30
[django] 오늘의 공부 정리 0625  (0) 2022.06.25
[django] 오늘의 공부 정리 0616  (0) 2022.06.15
[django] 오늘의 공부 정리 0615  (0) 2022.06.15
[django] 오늘의 공부 정리 0613  (0) 2022.06.13