해결된 질문
작성
·
41
0
안녕하세요! 해당 수업에서 django shell에서 update 부분 실습하다가 결과 값에 의문이 생겨 질문드립니다.
이 부분에서 auto_now=True
필드도 같이 bulk_update
함수의 인자인 fields
에 지정해야만 해당 필드도 같이 업데이트 된다고 하셨는데 제 코드에서는 updated_at
필드의 값이 업데이트 되지 않았습니다.
제가 나름대로 이해한 바로는 bulk_update
는 따로 save
를 호출하지 않기 때문에 updated_at
을 fields
인자에 추가해주더라도 변한 값이 없어서 업데이트가 되지 않는 걸까요?
그렇다면 제대로 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())
저는 두번째 방법을 추천드립니다.
좋은 질문 주셔서 감사드립니다. 🙇
화이팅입니다. :-)