장고3
모델
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(조건) - 조건 키워드
[컬럼이름]__[조건키워드]=”조건”- contains
필드이름__contains=”문자열”
“문자열”이 포함된 데이터 조회 - range
필드이름__range=(시작, 끝)
조건 범위 내의 데이터 조회 - filter
[모델이름].objects.filter([컬럼이름]__[조건키워드]=”조건”)
여러 데이터를 조회 - get
[모델이름].objects.get([컬럼이름]__[조건키워드]=”조건”)
하나의 데이터만 조회
- contains
- 체인으로 연결해서 조회하기
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)
관리자 페이지에서도 데이터를 조작할 수 있다.
Leave a comment