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

jw3215님의 프로필 이미지
jw3215

작성한 질문수

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

장고 기본 CBV API (Generic date views)

강의 9분쯤 부분에 질문있습니다.

해결된 질문

작성

·

174

0

created_at 필드의 year과 month 변수를 랜덤으로 바꾸는 부분에서 질문있습니다.

from instagram.models import Post

post_list = Post.objects.all()
import random

# for post in post_list:
post = post_list.get(pk=105)
year = random.choice(range(1990, 2020))
month = random.choice(range(1, 13))
print(post.created_at.year) # 첫번째 print
post.created_at = post.created_at.replace(year=year, month=month)
print(post.created_at.year) # 두번째 print
post.save()
print(post.created_at.year) # 세번째 print

year과 month 변수가 바뀌지 않아 print문으로 찍어보았는데요.

첫번째 print : 2021

두번째 print : 1994

세번째 print : 2021

이렇게 출력되었습니다. save 메서드를 호출하면서 원래대로 돌아간 것 같은데 혹시 지정해야하는 옵션이 있을까요?

답변 2

1

jw3215님의 프로필 이미지
jw3215
질문자

답변 감사합니다!!

방금 확인해보니 created_at 필드에 auto_now가 적용되어있었습니다...ㅎㅎ

속성 변경 후 정상적으로 잘 되네요. 감사합니다!

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

잘 해결하셨습니다. 참고로 created_at 속성은 DB에 처음 저장될 때의 시각을 저장하기 위함이니 auto_now_add=True를 지정하시는 것이 맞으며, updated_at 속성은 매 변경 시각을 저장하기 위함이니 auto_now=True를 지정하는 것이 맞습니다. 그리고 created_at과 updated_at은 대개 직접 수정할 필요가 없습니다.

1

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

안녕하세요. save() 호출 후에 필드값이 변경되는 동작은 장고에는 없습니다. 뭔가 다른 로직이 더 있으신 건 아닌지요?

저도 방금 해보니 .save() 후에도 필드값이 그대로 유지되고 있습니다.

 

jw3215님의 프로필 이미지
jw3215

작성한 질문수

질문하기