22. 11. 24.

hyo_d·2022년 11월 24일
0

캠프 60일차

유화제작 프로젝트 3일차
백엔드와 딥러닝 코드들을 병합하고 프론트 연동을 시작했다. 저번보다는 일찍 시작했지만 내일도 늦게까지 해야될 것 같다. 프론트 때문에 열심히 구현한 기능들을 다 못 보여주는 느낌이라 아쉽다..

오늘 공부한 것

1. db orm과 구조

  • queryset, object의 차이
    • object : 테이블에 입력 된 특정 레코드
    • queryset : object의 집합 ex) [object(1), object(2), object(3)]
  • objects.get, objects.filter의 차이
Model.objects.get(id=obj_id) # => return object
Model.objects.filter(date=datetime.today()) # => return queryset

2. 데이터 추가, 조회, 삭제, 수정하기

DB에 있는 데이터를 추가, 조회, 삭제, 수정하는 코드. 기본적으로 숙지해둬야 편할 것 같다.

# 추가1
model = Model(
  field1="value1",
  field2="value2"
)
model.save()

# 추가2
Model.objects.create(
  field1="value1",
  field2="value2"
)

# 조회
Model.objects.all()
Model.objects.filter()
Model.objects.get()

# 수정1
model = Model.object.get(id=obj_id)
model.field = value
model.save()

# 수정2
Model.objects.filter(field__contains=value).update(
    field1="value1",
    field2="value2"
)

# 삭제
Model.objects.filter(field="value").delete()
Model.objects.get(id=obj_id).delete()

3. db orm 패턴

  • 자주 사용하는 패턴
# objects.get에서 객체가 존재하지 않을 경우 DoesNotExist Exception 발생
try:
    Model.objects.get(id=obj_id)
except Model.DoesNotExist:
    # some event
    return Response("존재하지 않는 오브젝트입니다.")

# -join_date처럼 "-"를 붙이면 역순으로 정렬
# .order_by("?")사용시 무작위 셔플
Model.objects.all().order_by("join_date") 

# queryset에서 첫번째 object를 가져옴. all()[0]과 동일
Model.objects.all().first()

# 입력한 object가 존재 할 경우 해당 object를 가져오고, 존재하지 않을 경우 새로 생성
object, created = Model.objects.get_or_create(
    field1="value1",
    field2="value2",
)

if created: 
    # created event
else: 
    # already exist event
profile
햇병아리

0개의 댓글