[Django] 4. 장고 셸을 이용해 데이터 만들기

[Django] 4. 장고 셸을 이용해 데이터 만들기

반응형

이전 포스팅에서 pybo 모델을 만들었다면, 이젠 데이터를 넣어줄 시간이다.

장고 프로젝트 디렉터리에서

python manage.py shell

을 입력하면 장고 셸이 실행된다.

from pybo.models import Question, Answer from django.utils import timezone

파이썬과 비슷하지만 조금 다른 장고셸이다.

위와같이 임포트해주고,

q = Question(subject = '', content = '', create_date = timezone.now()) q.save()

제목과 내용은 입맛에 따라 입력해주고, 저장해주면 데이터베이스에 저장된다.

q.id를 입력하면 자동으로 생성되는 q의 primary key가 출력된다.

위와같은 방식으로 2~3개정도의 데이터를 생성해보자.

데이터를 생성했다.

그러면 이 데이터들은 어떻게 조회할까?

Question.objects.all()

이렇게 모든 데이터를 볼 수 있다.

하지만 [ .....] 이렇게 표시되는게 불편하다.

그럴땐 Question 모델의 기능을 변경해주자.

class Question(models.Model): subject = models.CharField(max_length=200) # 글자 수 제한하려면 charField content = models.TextField() # 글자수 제한 X create_date = models.DateTimeField() # 시간 def __str__(self): # Question.objects.all에 보기 편한 format return self.subject

모든 데이터 조회가 아니라 특정 데이터 조회가 필요하다면,

Question.object.filter(id = 1) # 리스트가 반환됨 #or Question.object.get(id = 1) # 1개의 데이터만 반환됨. ## 특정 조건 조회 Question.object.filter(subject__contains = 'django')

이렇게 조회가 가능하며, 다른 변수에 할당한 다음

q.subject = 'modify text' 와 같은 명령어로 변경도 가능하며,

q.delete를 이용하여 삭제도 가능하다.

질문을 만들었으니, 이제 답변도 등록해보자.

q = Question.object.get(id=1) # id=1을 삭제했다면 다른 id로 a = Answer(question = q, content = 'answer', create_date = timezone.now()) a.save()

이렇게 답변도 등록이 가능하다.

답변은 질문을 참조하고있기 때문에, question = q로 참조하는 질문을 연결해준다.

또한,

a.question # 답변과 연결된 질문 q.answer_set.all() # 질문과 연결된 답변

이렇게 연결된 데이터들도 조회가 가능하다.

반응형

from http://kkiho.tistory.com/31 by ccl(A) rewrite - 2021-12-21 15:26:52