1 분 소요

[Django]Django Shell 사용하기

image-20241007015233582

Django Shell 사용하기

이번 포스팅에서는 Django Shell을 활용하여 모델 오브젝트를 조작하는 방법에 대해 알아볼 것임. 예제는 polls 앱의 models.py 파일을 기반으로 작성할 것임.

1. Django Shell 실행하기

먼저, Django Shell을 실행함. 터미널에서 다음 명령어를 입력하면 됨:

$ python manage.py shell

이제 Django Shell이 실행됨.


2. 모델 가져오기

models.py 파일에 정의된 모든 모델을 가져옴:

>>> from polls.models import *
>>> Question

3. 모든 오브젝트 가져오기

모든 QuestionChoice 오브젝트를 가져옴:

>>> Question.objects.all()
>>> Choice.objects.all()

4. 특정 Choice 오브젝트 가져오기

첫 번째 Choice 오브젝트를 가져와서 속성들을 확인해봄:

>>> choice = Choice.objects.all()[0]
>>> choice.id
>>> choice.choice_text
>>> choice.votes

해당 Choice와 연결된 Question을 가져옴:

>>> choice.question
>>> choice.question.pub_date
>>> choice.question.id

해당 Question과 연결된 모든 Choice를 가져옴:

>>> question.choice_set.all()

5. 현재 날짜와 시간 구하기

datetime을 활용하여 현재 날짜와 시간을 구함:

>>> from datetime import datetime
>>> datetime.now()

timezone을 활용하여 현재 날짜와 시간을 구함:

>>> from django.utils import timezone
>>> timezone.now()

6. 새로운 Question 오브젝트 생성하기

"커피 vs 녹차"라는 내용의 새로운 Question 오브젝트를 생성하고 'q1'이라는 변수에 저장함:

>>> q1 = Question(question_text="커피 vs 녹차")

timezone을 활용하여 새로운 오브젝트 'q1'의 생성 시각을 설정함:

>>> from django.utils import timezone
>>> q1.pub_date = timezone.now()

새로운 Question 오브젝트 'q1'을 데이터베이스에 저장함:

>>> q1.save()

또 다른 질문인 q3를 생성함:

>>> q3 = Question(question_text="abc")
>>> q3.pub_date = timezone.now()
>>> q3.save()

create() 메서드를 활용하여 q3와 연결된 새로운 Choice 오브젝트를 생성함:

>>> q3.choice_set.create(choice_text="b")

새로운 Choice 오브젝트를 생성하고 question 필드에 q3 값을 넣어 연결함:

>>> choice_c = Choice(choice_text='c', question=q3)
>>> choice_c.save()

7. 마지막 Question 오브젝트 가져오기

가장 마지막으로 만들어진 Question 오브젝트를 가져옴:

>>> q = Question.objects.last()

해당 오브젝트의 question_text에 새로운 내용을 더해 수정함:

>>> q.question_text = q.question_text + '???'

마지막으로 만들어진 Choice 오브젝트를 가져옴:

>>> choice = Question.objects.last()

해당 오브젝트에 연결된 Choice를 가져옴:

>>> choice.question.choice_set.all()

마지막으로 가져온 오브젝트를 삭제함:

>>> choice.delete()

이번 포스팅에서는 Django Shell을 사용하여 모델을 조작하는 방법을 알아봤음. Django Shell은 모델을 테스트하고, 데이터를 조작하는 데 매우 유용함.

태그:

카테고리:

업데이트:

댓글남기기