반응형
이전 포스팅에서 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: Question object (1)> .....] 이렇게 표시되는게 불편하다.
그럴땐 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() # 질문과 연결된 답변
이렇게 연결된 데이터들도 조회가 가능하다.
반응형
'python > Django' 카테고리의 다른 글
[Django] 6. 장고 템플릿 구현 (0) | 2021.12.22 |
---|---|
[Django] 5. 장고 Admin 활용 (0) | 2021.12.22 |
[Django] 3. 모델 적용 (0) | 2021.12.21 |
[Django] 2. 서비스 생성 (0) | 2021.12.21 |
[Django] 1. 장고 시작 (0) | 2021.12.21 |