터칭 데이터

장고(Django) 쉘에서 데이터 수정하고 삭제하기 본문

장고 (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()
 

 

주석 부분을 잘 확인하세요.