[Django] 장고 Model

🎈 Model

모델 생성 & 적용 과정
사용할 데이터 확인 → 데이터 모델링 → 데이터에 맞는 field 작성 → 모델 생성 / 변경 → django 반영

django에서 model 생성.

#models.py
from django.db import models
class Menu(models.Model):
    name = models.CharField(max_length=50)
    price = models.IntegerField()
    img_path = models.TextField()

🎈 Migration

마이그레이션(Migration)은 모델(Model)의 변경 사항 즉 Django 프로젝트의 데이터 구조 변경 사항을 관리하기 위한 Django만의 관리 방법이다. 변경될 때마다 히스토리를 하나씩 만들어 두고 마치 블럭을 갈아 끼우듯 생성한 히스토리를 실제 데이터베이스에 반영하는 거죠. 그리고 이 모든 과정은 Django의 ORM(Object-Relational Mapping)을 통해 진행한다.

변화하여 병합할 Migrations 을 생성.
python manage.py makemigrations

전체 migrations 확인
python manage.py showmigrations

ORM 을 통해 sql 로 변경을 확인
python manage.py sqlmigrate {app명} {migrations num}

변경 히스토리를 기준으로 데이터베이스에 반영
python manage.py migrate

🎈 데이터 넣고 조회

해당 프로젝트로 이동 후 shell 실행
python manage.py shell

  • model 가져오기
    from {app}.models import {model명}
  • 데이터 삽입
    {model명}.objects.create({필드명}={값})
  • 모든 데이터 조회
    {model명}.objects.all()
  • 모든 세부 데이터 조회
    {model명}.objects.all().values()

🎈 데이터 상세 조회

{model}.objects.all() : 모든 데이터 조회
{model}.objects.all.values(컬럼명) : 특정 컬럼의 데이터 조회
{model}.objects.order_by(필드명) : 정렬된 데이터를 조회, 내림차순으로 할땐 필터에 '-' 붙여서 사용
{model}.objects.get(field=value) : 하나의 데이터를 조회. 여러개 나올 시 에러 발생
{model}.objects.filter(field=value) : 여러 데이터를 조회
rows = {model}.objects.count() : 데이터 개수 세기
data = {model}.objects.exclude(field=value) : 특정 조건 제외한 데이터 조회
data = {model}.objects.filter(price=10000).order_by('name') : 체인으로 연결해서 조회

조건 키워드 검색
__exact, __iexact : 대소문자 구분/미구분 일치하는지를 체크

data = {model}.objects.filter({필드명}__iexact='chicken')
# {필드명}이 'chicken'인 데이터를 모두 조회합니다.
# 단, 대소문자를 구분하지 않습니다.

__contains,__icontains : 지정한 문자열을 포함하는지 체크 (대소문자 구분/미구분)

data = {model}.objects.filter({필드명}__contains='chicken')
# {필드명}에 'chicken'이 포함된 모든 데이터를 조회합니다.
# 단, 대소문자를 구분합니다. (__contains)

__range : 지정한 범위 내에 포함되는지 체크

data = {model}.objects.filter({필드명}__range=(1000,5000))
# {필드명}이 1000~5000인 모든 데이터를 조회합니다.

__in : 주어진 리스트 안에 존하는 자료를 조회

data = {model}.objects.filter({필드명}__in=[21,25,27])

🎈 데이터 수정

from {app}.models import {model명}
data = {model명}.objects.get(id=1)
data.{필드명} = {변경할내용}
data.save()

{model명}.objects.all()

🎈 데이터 삭제

from {app}.models import {model명}
data = {model명}.objects.get(id=1)
data.delete()

좋은 웹페이지 즐겨찾기