장고 (Django)
장고(Django) 쉘에서 데이터 수정하고 삭제하기
터칭 데이터
2023. 11. 1. 15:36
쉘에서 데이터 수정하기
>>> from polls.models import *
>>> q = Question.objects.last()
>>> q
<Question: 제목: abc, 날짜: 2023-11-01 05:51:02.905096+00:00>
>>> q.question_text
'abc'
>>> q.question_text = q.question_text + '???'
>>> q.question_text
'abc???'
>>> q.save()
쉘에서 데이터 삭제하기
>>> choice = Choice.objects.last()
>>> choice
<Choice: c>
>>> choice.question.choice_set.all()
<QuerySet [<Choice: a>, <Choice: b>, <Choice: c>]>
>>> q = choice.question
>>> q
<Question: 제목: abc???, 날짜: 2023-11-01 05:51:02.905096+00:00>
>>> q.choice_set.all()
<QuerySet [<Choice: a>, <Choice: b>, <Choice: c>]>
>>> choice.delete() # 분명 delete로
(1, {'polls.Choice': 1})
>>> q.choice_set.all() # c를 테이블에서는 지웠지만
<QuerySet [<Choice: a>, <Choice: b>]>
>>> choice # 장고 쉘에서는 메모리 상에 남아있어
<Choice: c> # 쉘에서는 조회가 된다.
>>> choice.choice_text # 당연히 .(필드명)으로도 데이터가 조회된다.
'c'
>>> choice.id # 단 테이블에서는 정상 삭제되었으므로 id가 조회되지 않는다.
>>> choice.save() # 쉘 메모리에 남아있다면 save()로 다시 DB에 입력할 수 있다.
# Question의 'abc'를 참조하는 Choice의 'a', 'b', 'c'는 전부 삭제
>>> q = Question.objects.get(id=4)
>>> q
<Question: 제목: abc???, 날짜: 2023-11-01 05:51:02.905096+00:00>
>>> q.choice_set.all()
<QuerySet [<Choice: a>, <Choice: b>, <Choice: c>]>
>>> q = q.choice_set.all()
>>> q
<QuerySet [<Choice: a>, <Choice: b>, <Choice: c>]>
>>> q.delete()
주석 부분을 잘 확인하세요.