장고가 데이터를 관리하는데 사용
SQL문을 사용하지 않고도 데이터를 관리할 수 있음
admin, auth, session 등에 필요한 테이블을 자동으로 생성
python manage.py migrate
from django.db improt models
class 모델명1(models.Model):
속성1 = models.CharField(max_length=100)
속성2 = models.TextField()
속성3 = models.DateTimeField()
...
class 모델명2(models.Model):
...
https://nachwon.github.io/django-relationship/
config.settings.py에 앱을 등록해야 DB 작업을 할 수 있다.
# config/settings.py
...
INSTALLED_APPS = [
...
'앱.apps.PyboConfig'
...
]
...
# 앱/apps.py
from django.apps import AppConfig
class PyboConfig(AppConfig):
name = '앱이름'
model을 가지고 실제 테이블을 생성하여 사용함
model이 추가되거나 모델의 속성이 추가되면 반드시 작업을 수행해야함
이때 테이블 생성 명령은 migrate임 (makemigration은 수행 파일 생성 명령)
// 가상 환경 활성화 상태
// 1. makermigration 명령으로 테이블 작업 수행을 위한 파일 생성
>>> python manage.py makemigrations
// 2. migrate 명령으로 테이블 생성
>>> python manage.py migrate
-> 실제 테이블명은 장고가 지어주기 때문에 모델명과 다를 수 있음 (ex. 앱명_모델명)
-> 사용 시 기존에 작성한 모델명으로 사용하면 되기 때문에 문제되지 않음
// 장고 쉘 실행
>>> python manage.py shell
// 모델 import 하기
>>> from 앱.models import 속성1, 속성2, ..
>>> 그밖에 필요한 기능 import
...
// 변수에 저장할 데이터를 삽입
>>> 변수 = 모델(속성1=' ', 속성2=' ', ...)
// 변수의 데이터를 DB에 저장
>>> 변수.save()
-> 장고는 데이터 생성 시 데이터의 id 값을 자동 생성해줌
1) 모델명.objects.all() - 전체 데이터 확인
// 모델이 가진 모든 데이터를 보여줌
>>> 모델명.objects.all()
이때 기본 설정은 데이터 유형을 출력하기 때문에 파이썬 model.py의 모델에 메소드를 추가하여 원하는 출력 결과로 수정
-> 속성이 변한 것이 아니므로 migrate 할 필요 없음
// 메소드 추가
class 모델(model.Model):
def __str__(self):
return self.subject
...
2) 모델명.objects.filter() - 조건에 맞는 여러 데이터 반환
filter는 하나 이상의 데이터를 반환함 - 반환값이 QuerySet
// 조건에 맞는 데이터 조회 시, 조건에 맞는 모든 데이터 반환
>>> 모델명.objects.filter(id=1)
// 조건에 맞지 않는(없는) 데이터 조회 시 빈 QuerySet 반환함
>>> 모델명.objects.filter(id=999)
3) 모델명.objects.get() - 조건에 맞는 하나의 데이터 반환
조건에 맞는 데이터가 없는 경우 에러 발생
// 조건에 맞는 데이터 반환
>>> 모델명.objects.get(id=1)
// 조건에 맞지 않는(없는) 데이터 조회 시, 에러 발생
>>> 모델명.objects.get(id=999)
4) 특정 문자열이 포함된 데이터 조회 방법
// 특정 속성에서 특정 문자열을 포함한 데이터 검색
>>> 모델명.objects.filter(속성__contains='문자열')
// 수정할 데이터를 조회하여 변수에 저장
// ex. 변수.objects.get(id=1)
>>> 변수.변경할속성 = '변경 내용'
>>> 변수.save()
// 수정할 데이터를 조회하여 변수에 저장
// ex. 변수.objects.get(id=1)
>>> 변수.delete()
// 변수1 = 기존 데이터, 변수2 = 변수1에 연결된 데이터
>>> 변수1 = 모델1.objects...
// ForeignKey 속성에 변수 1을 삽입
>>> 변수2 = 모델2(ForeignKey속성=변수1, 속성2=' ', ...)
>>> 변수2.save()
QuerySet으로 반환
// 모델1의 데이터에 연결된 모델2의 데이터를 조회
>>> 변수1.모델2_set.all()
[Django] 마크다운 문법(사용) & 설치 & 적용 방법 (0) | 2021.07.22 |
---|---|
[Django] 템플릿 상속 (0) | 2021.07.18 |
[Django] 템플릿 & 화면 출력 (0) | 2021.07.17 |
[Django] 장고 URL 및 뷰 (0) | 2021.07.15 |
[Django] 장고 설치 및 실행 방법 (0) | 2021.07.14 |