CRUD

Andromeda_Galaxy·2024년 5월 19일

Django

목록 보기
6/12

CRUD

  • Django는 Model을 정의하면 ORM을 통해서 데이터베이스에 데이터를 추가하고(Create) 조회하고(Read) 수정하고(Update) 삭제(Delete)할 수 있도록 하는 편리한 기능을 제공
  • Model의 'objects'를 이용해서 수행

데이터 추가하기 (Create)

  • 데이터를 추가하기 위해서는 import를 이용해서 먼저 사용할 Model을 불러 와야 함
from {app_name}.models import {model}

Create

  • Create는 데이터 객체를 생성하고 데이터베이스에 반영하는 과정을 한 번에 할 수 있음
data_model = {model}.objects.create( {field_name}=value, ... )
# example
# food = Food.objects.create(price=10000)

save

  • save를 이용하면 데이터 객체를 생성하는 타이밍과 실제로 데이터베이스에 반영하는 과정을 분리할 수 있음
data_model = {model}( {field_name}=value, ... )
data_model.save()
# example 
# food = Food(price=10000)
#   food.save()

데이터 조회하기 (Read)

  • 데이터를 데이터베이스로 부터 읽어오는 것은 Django Model Manager인 objects를 통해서 할 수 있음

모든 데이터 조회

  • all()을 사용
data = {model}.obejcts.all()

하나의 데이터 조회

  • get()을 사용
    • get을 사용했을때 조회 결과가 여러개라면 에러
data = {model}.objects.get(field=value)

조건에 맞는 여러 데이터 조회

  • filter()를 사용
  • 해당 필드 조건에 해당하는 모든 데이터를 가져오거나 아래에서 설명하는 조건 키워드를 함께 사용할 수 있음
data = {model}.objects.filter(field=value)

정렬해서 데이터 조회

  • order_by()를 사용
  • 두 개 이상의 필드를 함께 사용해서 정렬할 수 있으며 '-'를 사용해서 내림차순으로 정렬할 수 있음
data = {model}.objects.order_by('field_1', '-field_2')
# field_1을 기준으로 오름차순으로 정렬하고 
# 그 결과를 다시 field_2를 기준으로 내림차순으로 정렬합니다.

데이터의 개수 세기

  • count()를 사용
rows = {model}.objects.count()

특정 조건을 제외한 데이터 조회

  • exclude()를 사용
data = {model}.objects.exclude(field=value)
# 특정 field가 value인 데이터를 제외한 모든 데이터를 조회합니다.

체인으로 연결해서 조회

  • 여러가지 데이터 조회를 체인처럼 연결해서 사용할 수 있음
data = {model}.objects.filter(price=10000).order_by('name')
# 가격(price)이 10,000원인 데이터를 이름(name)으로 정렬해서 조회합니다.
data = data.order_by('name')
# 이렇게 적어도 위와 똑같은 명령을 수행합니다. 

조건 키워드

  • {field_name}__{keyword}={condition} 형태로 사용

__exact, __iexact

  • __exact는 대소문자를 구분해서 조건과 정확히 일치 하는지를 체크
  • __iexact는 대소문자를 구분 하지 않고 일치하는 지를 체크

__contains, __icontains

  • 지정한 문자열을 포함 하는지를 체크
  • __icontains는 대소문자를 구분하지 않고 체크

__range

  • 지정한 범위 내에 포함 되는지 체크
  • 파이썬의 range와 비슷

공식문서

데이터 수정하기

  • 수정할 데이터 객체를 가져온 다음 원하는 필드를 수정하고 save()를 호출하여 데이터베이스에 반영

데이터 삭제하기

  • 데이터를 삭제하기 위해서는 삭제할 데이터 객체를 가져온 다음 delete()를 호출

공식문서

profile
안녕하세요.

0개의 댓글