1. 장고 쉘 실행하기
(venv)prompt> python manage.py shell
2. Question 모델 생성하기.
from pybo.models import Question, Answer
from django.utils import timezone
q = Question(subject='pybo가 무엇인가요?', content='pybo에 대해 알고 싶습니다.', create_date=timezone.now())
q.save()
q.id
- 위 명령을 '장고쉘'에서 한줄씩 실행시킨다.
- Question 모델 데이터의 id 값을 확인해보면 1이 출력되는것을 확인 할 수 있다.
- 이것은 데이터베이스의 pk (primary key)이며 q객체를 반복해서 생성할 때마다 값이 증가하는것을 알 수 있다.
3. Question 모델 데이터를 한꺼번에 조회하기
djangoShell> Question.objects.all()
- 위 명령의 결과는 데이터 유형을 출력한것이어서 보기 불편하다.
- Question 모델에 __str__ 메서드를 추가하면 제목을 확인할 수 있다.
4. pybo / models.py 를 수정하여 Question 모델 데이터 결과에 속성값(제목) 보여주기
/*... 생략 ....*/
class Question(models.Model)
subject = models.CharFiled(max_lenth=200)
content = models.TextField()
creat_date = models.DateTimeFiled()
def __str__(self):
return self.subject
/*... 생략 ....*/
- 위와 같이 수정하면 Question.objects.all() 명령으로 데이터 조회시 id가 아닌 제목을 볼 수 있다.
5. Question 모델데이터 조회 방법들
Question.objects.filter(id=1) //배열반환
Question.objects.get(id=1) //값반환
Question.objects.filter(subject__contains='장고') //장고라는 단어가 들어간 모든 Question 출력.
6. 정리하면 python에서 다음과 같이 사용가능함.
//질문수정
q = Question.objects.get(id=2)
q.subject = 'Django Model Question'
q.save()
//질문삭제
q = Question.objects.get(id=1)
q.delete()
7. 질문 모델에 종속된 답변 모델 데이터 만들기
q = Question.objects.get(id=2)
from django.utils import timezone
a = Answer(question=q, content='네 자동으로 생성됩니다.', create_date=timezone.now())
a.save()
a.id
a.question
- 위 명령을 장고쉘에서 하나씩 실행시켜 본다.
- 마지막 a.question을 보면 Answer 모델 객체는 question 속성이 있으므로 답변을 통해 질문을 찾는건 매우 쉽다.
- 그럼 Question 모델 객체가 답변을 찾는 방법은? 바로 다음의 <연결모델명>_set.all() 을 사용하면 된다.
8. <연결모델명>_set 으로 질문에 종속된 답변 찾기
q.answer_set.all()
위 문서는 이지스퍼블리싱에서 출간한 박응용님의 "점프투 장고"를 제가 공부하면서 요약한 내용입니다.
게시한 내용은 공부를 하면서 저만 알아볼 수 있게 요약한 부분들도 많으므로 부족한 내용은
직접 책을 구입하셔서 보시면 좋을 것 같습니다.
'Study > django' 카테고리의 다른 글
django - QuestionTitleList (0) | 2021.09.25 |
---|---|
django - Admin (0) | 2021.09.25 |
django - Database Setting (0) | 2021.09.24 |
django - Create app (0) | 2021.09.24 |
django - Setting (0) | 2021.09.24 |