인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

김은혜님의 프로필 이미지

작성한 질문수

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)

05-07 모델을 통한 생성 수정 삭제 예시

bulk_update에서 updated_at 필드

해결된 질문

작성

·

41

0

안녕하세요! 해당 수업에서 django shell에서 update 부분 실습하다가 결과 값에 의문이 생겨 질문드립니다.

image.png

이 부분에서 auto_now=True 필드도 같이 bulk_update 함수의 인자인 fields에 지정해야만 해당 필드도 같이 업데이트 된다고 하셨는데 제 코드에서는 updated_at 필드의 값이 업데이트 되지 않았습니다.

image.png

제가 나름대로 이해한 바로는 bulk_update는 따로 save를 호출하지 않기 때문에 updated_atfields 인자에 추가해주더라도 변한 값이 없어서 업데이트가 되지 않는 걸까요?

그렇다면 제대로 updated_at도 업데이트 되게끔 하기 위해서는 따로 post.updated_at = timezone.now()title 수정할 때 해주어야 하는 걸까요?

답변 1

0

이진석님의 프로필 이미지
이진석
지식공유자

안녕하세요.

김은혜 님께서 말씀하신 내용이 맞습니다.

제 설명에서도 bulk_update 전에 .update_at 필드 값 지정이 없었고, bulk_update 호출 시에는 모델의 save 호출이 없기 때문에, 기존 updated_at 필드값으로 UPDATE 쿼리가 수행된 상황입니다.

1) post.title 값 지정할 때 post.updated_at 필드 값도 timezone.now() 값을 지정하실 수도 있겠지만, 이는 매 포스팅마다 다른 시각을 지정하는 것인데요.

2) .updated_at 값은 동일한 값으로 지정해도 된다면, updated_at 필드는 뺀 bulk_update 후에 아래와 같이 updated_at 필드 값을 일괄 변경해주시면 하나의 쿼리로 업데이트가 이뤄집니다.
post_qs.update(updated_at=timezone.now())

저는 두번째 방법을 추천드립니다.

좋은 질문 주셔서 감사드립니다. 🙇

화이팅입니다. :-)