학습주제
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()
를 해준다.