Leta Learns

[점프 투 장고] 2-02 데이터를 관리하는 모델 본문

Django

[점프 투 장고] 2-02 데이터를 관리하는 모델

leta 2021. 7. 1. 01:48

admin, auth, content types, sessions 앱은 장고 프로젝트를 만들 때 기본으로 생성되어 설치.

 

BASE_DIR : 프로젝트 디렉터리

 

python manage.py makemigrations : 테이블 작업 파일 생성

python manage.py migrate : 실제 테이블 생성 (ok 짱 많이)

 

models.py

클래스로 생성.

어떤 모델이 다른 모델을 속성으로 가지면 ForeignKey 이용 (다른 모델과의 연결을 의미)

on_delete=models.CASCADE : 답변에 연결된 질문이 삭제되면 답변도 함께 삭제 (Answer 모델)

 

모델 만든 후 settings.py 에서 앱 추가. ( INSTALLED_APPS = )

앱 추가 안 하면 -> 장고가 앱 인식 X -> 데이터베이스 관련 작업 X

모델은 앱에 종속되어 있으므로 반드시 장고에 앱을 등록해야 함.

 


 

장고 셸 실행 : python manage.py shell

Question, Answer 모델 import한 후 모델 데이터 만들고 (q = Question ~ ) q.save()를 통해 모델 데이터를 데이터베이스에 저장.

 

id : 데이터의 유일한 값. PK (primary key)

 

Question 모델 데이터 모두 조회 : Question.objects.all()

 

모델 데이터 조회 시 속성 값 보여주기 : ex) def __str__(self):

                                                            return self.subject 

조건으로 Question 모델 데이터 조회 : Question.objects.filter(id=1)

                                                  -> 조건에 맞지 않는 데이터를 조회하면 빈 QuerySet 반환

Question 모델 데이터 하나만 조회 : Question.objects.get(id=1)

                                                  -> 조건에 맞지 않는 데이터를 조회하면 오류 발생

제목의 일부를 이용하여 데이터 조회 : Question.objects.filter(subject__contains='장고') 언더스코어 2개!!

 

데이터 수정 방법 : 수정할 데이터 조회 -> 수정 -> .save()

데이터 삭제 방법 : 삭제할 데이터 조회 -> .delete()

 

 

연결된 데이터로 조회하기 : a.question #Answer모델 데이터에 Question 모델 데이터 연결되어 있음. 링크 참고)

                                    q.answer_set.all() #질문을 통해 답변 찾기

 

질문 1개에 답변 1개 이상이 달릴 수 있다. -> 질문에 달린 답변은 q.answer_set으로 조회

답변 1개에는 질문 1개만 연결. -> a.question

연결모델명_set

 

 

 

 

 

참고 : wikidocs 점프 투 장고 https://wikidocs.net/70650

 

 

Comments