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