일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Django란
- 이분그래프
- string 메소드
- 알고리즘 공부방법
- 프레임워크와 라이브러리의 차이
- k-eta
- 매크로
- double ended queue
- 구조체와 클래스의 공통점 및 차이점
- Django Nodejs 차이점
- c++
- iOS14
- 연결요소
- scanf
- getline
- 백준
- 2557
- 자료구조
- 엑셀
- EOF
- 장고란
- UI한글변경
- 표준 입출력
- string 함수
- 시간복잡도
- correlation coefficient
- vscode
- 입출력 패턴
- Django의 편의성
- 입/출력
- Today
- Total
Storage Gonie
Django (16) Model에 대한 이해 및 Model Operations 본문
장고의 Models
- Model은 Python 클래스이다.
- Model은 앱에서 사용되는 데이터의 타입을 설명해준다.
- 장고는 자동으로 Model을 번역해서 Database에 Table을 생성한다.(ORM)
- https://docs.djangoproject.com/en/1.11/topics/db/models/
- 레스토랑 장고 프로젝트를 진행한다면,
Costumer 모델과 Restaurant 모델은 기능이 완전히 다르기 때문에 다른 앱에 넣어줘야 한다.
# Fields란 무엇인가
- Fields는 장고와 DB에게 어떤 종류의 데이터를 저장할 것인지 알려준다.
- 나이는 숫자, 이름은 텍스트. 이런게 장고의 field이다.
- Fields는 잘못된 입력을 저장하려고 할 때 알려주기도 한다.
ex) 나이 필드에는 숫자만 저장될 수 있는데 텍스트를 입력한 경우 에러 발생시킴
# Model 정의하는 방법
- models를 import해서 이를 상속받아 클래스를 정의하면 된다.
- Cat모델은 name, breed 필드를 가진다.
from django.db import models
class Cat(models.Model)
name = models.CharField(max_length = 30)
breed = models.CharField(max_length = 20)
정의한 뒤, 장고를 실행하면 장고는 우리가 정의한 모델을 자동으로 불러와 다음과 같은 테이블을 데이터베이스에 생성한다.
(이 때 장고 덕분에 정의하지 않았던 id필드가 디폴트로 자동생성된다. 왜냐하면 오브젝트를 ID로 정렬해야하기 때문에)
Model Operations(API)
- Django는 다양한 데이타베이스 API 들을 제공한다.
- 이러한 기능은 Django가 ORM 서비스를 기본적으로 제공함에 따른 것으로 데이타베이스를 편리하게 핸들링할 수 있게 도와준다.
- 아래의 API들을 사용하면 장고는 이를 모두 SQL로 번역한다.
- http://pythonstudy.xyz/python/article/310-Django-%EB%AA%A8%EB%8D%B8-API
# CREATE
@ create()
- 하나의 row를 생성함
- 정의한 모델에 대해서 오브젝트를 생성하는 것.
Cat.objects.create(name = "Mr.Fluffy", breed="Persian")
Cat.objects.create(name = "Mr.Bunns", breed="British")
Cat.objects.create(name = "Conrad", breed="Siamese")
Cat.objects.create(name = "Shishi", breed="British")
Cat.objects.create(name = "Conrad", breed="Persian")
# SELECT
@ get()
- 하나의 row만 가져오기 위한 연산
cat = Cat.objects.get(id=1) // id는 Primary key인데 이것이 1인 row를 불러옴
@ all()
- 모든 row를 불러오기 위한 연산
cats = Cat.objects.all() // 모든 row를 불러옴
@ filter()
- 조건에 맞는 여러 row를 한번에 불러오기 위한 연산
- filter의 Lookup Options은 아래와 같은 것들이 있음(좀 더 세밀하게 조건을 줄 수 있는 방법)
- startswith(대소문자를 구분O, 특정 문자로 시작하는)
- contains(대소문자를 구분O, 특정 문자를 포함하고 있는)
- istartswith(대소문자 구분X, 특정 문자로 시작하는)
- icontains(대소문자 구분X, 특정 문자를 포함하고 있는)
- lt(less than)
- gt(greater than) 등등
british_cats = Cat.objects.filter(breed="British") // breed 필드의 값이 British인 것을 모두 불러옴
british_cats = Cat.objects.filter(name__startswith="Mr") // name 필드가 Mr로 시작하는 고양이를 모두 불러옴
# UPDATE
@ save()
cat = Cat.objects.get(id=1) // id는 Primary key인데 이것이 1인 row를 불러옴
cat.name = "Fluffy"
cat.save()
# DELETE
@ delete()
cat = Cat.objects.get(id=1) // id는 Primary key인데 이것이 1인 row를 불러옴
cat.delete()
'웹개발 > 인스타 클론 (1) Django' 카테고리의 다른 글
Django (18*) Admin 패널 로그인을 위한 super user 생성 (0) | 2019.06.25 |
---|---|
Django (17*) Model 수정 반영을 위한 Migratiton (0) | 2019.06.25 |
Django (15) Python 클래스 상속(Class Inheritance) (0) | 2019.06.25 |
Django (14) 장고의 ORM (0) | 2019.06.22 |
Django (13) 앱의 구성요소 Models, Urls, Views (0) | 2019.06.22 |