11. Django Shell - 레코드 수정 및 삭제 하기

data_hamster·2023년 4월 25일
0

학습주제
Django Shell - 레코드 수정 및 삭제 하기

학습내용
모델을 통해 테이블의 내용을 수정 삭제한다.

q = Question.objects.last()
이 뜻는 마지막으로 생성된 question 오브젝트를 가져온다.

값을 추가하기


테이블 저장 X, 장고 쉘 저장 O


바뀌지 않았음
q.save()를 해주면 변경

이어서, 수정이 아닌 삭제를 해보기로 한다.

choice = Choice.objects.last()
로 받아준다.
admin에서 삭제할 경우, 그 결과를 바로 시각적으로 알 수 있는데, 마찬가지로 장고 쉘에서는 foreign key로 연결된 question의 choice_set을 통해 알아볼 수 있다.
choice.question.choice_set.all()


이렇게 모든 초이스들을 불러올 수 있다.

이렇게 초이스 'c'가 question의 choice_set에서 사라진 것을 볼 수 있다.

이 delete는 테이블에서 choice를 지웠기 때문에 넘겨받은 choice의 choice_text는 그래도 살아있지만, choice.id는 테이블에서 지워졌기 때문에 없다.

다시 save() 해주면 메모리에 있던 초이스를 테이블에 썼기 때문.

테이블에 다시 생겨난 것을 알 수 있다.

만일 question 내의 모든 choice들을 삭제하고 싶으면
q1.choice_set.delete()
를 해준다.

profile
반갑습니다 햄스터 좋아합니다

0개의 댓글