본문 바로가기

TIL

TIL 050223

순열/조합 문제에서 itertools를 쓸 때 from itertools import combinations처럼 쓸 것만 import하는게 가볍다.


오늘의 재귀 함수

def solution(n, a, b):

    함수 빠져나올 조건: return 리턴값

    if n < a : return 0

    return 동작/연산 solution(동작/연산)

    return b + solution(n-a+b, a, b)

---> solution(20, 3, 1)

= 1 + solution(20-3+1, 3, 1)

= 1 + solution(18, 3, 1)

= 1 + (1 + solution(16, 3, 1))

= 2 + solution(16, 3, 1)

= 3 + solution(14, 3, 1)

.

.

.

= 8 + solution(4, 3, 1)

= 8 + (1 + solution(2, 3, 1))

= 9 + solution(2, 3, 1)

= 9 + 0

= 9


개인과제의 update 부분에서 내용이 수정되는걸 확인하고 제출했는데 있던 내용을 없애니까 에러가 나는 걸 발견했다.

admin/ 페이지에서는 되고 포스트맨에서만 안된다.

 

시해

이것저것 수정해봤는데 User에서 PositiveIntegerField로 모델링한 age, Todo에서 DateTimeField로 설정한 completion_at을 포스트맨에서 수정할 때 ""로 요청 보내면 유효하지 않다고 에러가 뜬다.

TextField인 introduction과 CharField gender는 에러가 안나고 ""으로 된다.

- models.py에서 null=True, blank=True, default=""를 이리저리 바꿔봤지만 안됐다.

- serializers.py에서 create를 override해봤지만 안됐다.

- 과제 해설 강의를 다시 보다가 decomplete을 obj.completion_at = None 이렇게 만들면 된다는 부분을 봤다.

  ---> 포스트맨에서 요청을 보낼 때 db.sqlite3에 나오는대로 null로 보내봤다. 

 

필드에서 null=True, blank=True를 써줬어도 포스트맨에서는 ""이 안되면 null을 보내야한다.

IntegerField에서 blank=True는 소용이 없다. blank("")는 문자. integer가 아니다.

default=""도 ""가 문자니까 안되는게 맞다. IntegerField라면 default=0 이런 식으로 해줘야한다.  

DateTimeField도 마찬가지!

 

is_completed 여부에 따라 completed_at 기록했다가 없앴다가 하게 만들기 완료!


 

'TIL' 카테고리의 다른 글

TIL 050423  (0) 2023.05.04
TIL 050323  (0) 2023.05.03
TIL 050123  (0) 2023.05.01
TIL 042823  (0) 2023.04.28
TIL 042723  (0) 2023.04.27