1 minute read

모델

from django.db import models

class Menu(models.Model):
    name = models.CharField(max_length=50)
    description = models.CharField(max_length=100)
    price = models.IntegerField()
    img_path = models.CharField(max_length=255)

    def __str__(self):
        return self.name

모델 작성 후 장고에게 알려줘야 한다.

python manage.py makemigrations
모델의 변경 사항을 인식해서 새로운 마이그레이션을 만든다.

python manage.py migrate
최신 버전의 마이그레이션을 DB에 반영한다.

이전 마이그레이션으로 되돌리려면
python manage.py migrate [앱이름] [되돌린 마이그레이션 번호]

migration

마이그레이션은 모델의 변경사항을 저장하는 목록이다.
migration폴더에 저장된다.

python manage.py showmigrations
현재 생성된 마이그레이션 목록을 보여준다.
왼쪽에 X는 반영이 된것을 의미한다.

python manage.py sqlmigrate [앱이름] [마이그레이션 번호]
orm을 통해서 어떻게 sql로 변환 되었는지 sql문을 보여준다.

Create

python manage.py shell
장고 쉘 환경을 실행한다.

[모델이름].objects.create([필드명]=[값])
객체 생성과 동시에 데이터베이스에 데이터를 저장한다.

[모델이름].objects.all()
모든 데이터를 조회한다.

[모델이름].objects.all().values()
세부 데이터 까지 조회한다.


from foods.models import Menu

Menu.objects.create(name=”코딩에 빠진 닭”,
… description=”착한 가격”,
… price=10000,
… img_path=”foods/images/chicken.jpg”)

python shell, django shell

두가지 모두 코드를 한 줄씩 실행할 수 있는 환경이다.
파이썬 쉘은 파이썬 코드를 실행하고 장고 쉘은 장고가 제공하는 명령어를 사용할 수 있다.
파이썬 쉘로는 장고에서 제공하는 기능을 사용할 수 없다.
파이썬 쉘로 장고를 사용하고 싶다면 환경변수 설정을 해줘야 하니 그냥 장고 쉘을 쓰면 된다.

Read

  • 전체 모델 조회
    [모델이름].objects.all()

  • 전체 모델 세부 내용까지 조회
    [모델이름].objects.all().values()

  • 전체 모델에서 특정 필드만 조회
    [모델이름].objects.all().values(‘컬럼이름’)

  • 오름차순 정렬하기 [모델이름].objects.order_by(‘컬럼이름’)

  • 내림차순 정렬하기
    [모델이름].objects.order_by(‘-컬럼이름’)

  • 데이터 개수 세기
    [모델이름].objects.count()

  • 특정 조건 제외한 데이터 조회하기
    [모델이름].objects.exclude(조건)

  • 조건 키워드
    [컬럼이름]__[조건키워드]=”조건”
    1. contains
      필드이름__contains=”문자열”
      “문자열”이 포함된 데이터 조회
    2. range
      필드이름__range=(시작, 끝)
      조건 범위 내의 데이터 조회
    3. filter [모델이름].objects.filter([컬럼이름]__[조건키워드]=”조건”)
      여러 데이터를 조회
    4. get
      [모델이름].objects.get([컬럼이름]__[조건키워드]=”조건”)
      하나의 데이터만 조회
  • 체인으로 연결해서 조회하기
    data = Menu.obejcts.filter(price=10000)
    data = data.order_by(‘name’)
    이런식으로 여러 조건들을 연결시킬 수 있다.

조건 키워드

Update

먼저 데이터를 변수에 담는다.
변수 = [모델이름].objects.get(조건)
예시) data = Menu.objects.get(id=1)

변수로 접근해 데이터를 변경한다.
변수.컬럼이름 = “수정”
예시) data.name = “바나나”

변경사항을 저장한다.
변수.save()

Delete

먼저 데이터를 변수에 담는다.
변수 = [모델이름].objects.get(조건)
예시) data = Menu.objects.get(id=1)

변수로 접근해 해당 데이터를 삭제한다.
변수.delete()

Queryset

쿼리셋은 장고ORM을 사용해서 DB와 소통할때 발생하는 자료형을 말한다. List와 비슷하다.

관리자 도구

  • 관리자 계정 생성하기
    python manage.py createsuperuser

계정 생성후 서버에 접속에 /admin/으로 들어가면 된다.
관리자 페이지에서 생성한 모델을 사용하려면 admin.py에 모델을 추가해 줘야 한다.

from foods.models import Menu

admin.site.register(Menu)

관리자 페이지에서도 데이터를 조작할 수 있다.

Tags:

Categories:

Updated:

Leave a comment