반응형
Index |
1. Django 명령어 |
2. Model Style |
3. Model |
4. Model Field |
5. Model Meta Class |
Reference |
1. Django 명령어
Django 명령어
# 데이터베이스 migration
python manage.py makemigrations <애플리케이션명>
# 테이블들을 데이터베이스에 생성
python manage.py migrate
# 파이썬 쉘 실행
python manage.py shell
# 생성된 마이그레이션 SQL 출력 확인
python manage.py sqlmigrate <애플리케이션명> <번호>
2. Model Style
Model Style
- 필드명은 lowercase와 underscore로 구성
- Meta 클래스는 필드명 이후에 정의
- 모델의 inner class와 method 순서는 아래를 따름
- database fields
- custom manager attributes
- class Meta
- def __str__()
- def save()
- def get_absolute_url()
- custom methods
- choice가 존재한다면 모두 uppercase로 명명. Enum types일 경우 아래 방법 이용
class MyModel(models.Model):
DIRECTION_UP = "U"
DIRECTION_DOWN = "D"
DIRECTION_CHOICES = {
DIRECTION_UP: "Up",
DIRECTION_DOWN: "Down",
}
class MyModel(models.Model):
class Direction(models.TextChoices):
UP = "U", "Up"
DOWN = "D", "Down"
3. Model
Model
- django.db.models.Model
- 데이터베이스와 연동되는 ORM: 데이터베이스 추상화 API
- 각 모델은 데이터베이스 필드가 클래스의 각 속성을 표현하는 단일 데이터베이스 테이블에 매핑
- 장고는 각 모델에 자동으로 증가하는 primary key 필드를 추가. 기본 값은 BigAutoField(64비트 정수)
- 각 애플리케이션 구성 혹은 DEFAULT_AUTO_FIELD 설정에 따라 전역 지정
from django.db import models
class 모델명(models.Model):
class 필드클래스명(models.TextChoices):
속성1 = '값', '명칭'
id = BigAutoField()
필드명 = models.CharField(max_length=250)
class Meta:
ordering = ['필드명1', '-필드명2']
indexs = [
models.Index(fields=['-필드명1']),
]
# 객체를 표현하는 문자열 반환
def __str__(self):
return 반환문자열
4. Model Field
Model Field
- django.db.models
models.BigAutoField()
- 64비트 정수 ID
models.CharField()
- SQL DB의 VARCHAR로 변환
- max_length: 최대 길이 지정
- choices: 선택 가능한 subclass 지정
- default: 기본값 설정
models.SlugField()
- SQL DB의 VARCHAR로 변환
- slug는 문자, 숫자 밑줄 또는 하이픈만 포함하는 레이블
models.TextField()
- SQL DB의 Text 칼럼으로 변환
models.DateTimeField()
- SQL DB의 DATETIME 컬럼으로 변환
- default: django.utils.timezone을 기본 값
- auto_now_add: 객체 생성시 날짜가 자동으로 저장
- auto_now: 갱신된 마지막 날짜와 시간을 저장
- Enumeration Field
- choices: 값-레이블 쌍인 열거형 항목들
- labels: 열거형 항목 명칭
- values: 열거형 항목 값
- names: 열거 항목 명칭
class 필드클래스명(models.TextChoices):
필드명1 = 'DF', 'Draft'
필드명2 = 'PB', 'Published'
5. Model Meta Class
Model Meta Class
- 모델에 대한 메타데이터 정의
- 데이터베이스 인덱스: 결과 필터링하거나 정렬시 쿼리의 성능 향상
ordering
- 결과를 정렬. 하이픈 사용시 내림차순
indexes
- 데이터베이스의 인덱스 정의
- 인덱스는 오름차순 또는 내림차순으로 하나 이상의 필드로 구성하거나 함수 표현식 및 DB 함수로 정의
- MYSQL에서는 내림차순으로 고정.
db_table
- 데이터베이스 이름 지정
default_manager_name
- 기본 관리자를 지정
Reference
[Text: Django(Model Index)] https://docs.djangoproject.com/en/5.0/ref/models/indexes/ |
[Text: Django(Model Field)] https://docs.djangoproject.com/en/5.0/ref/models/fields/ |
반응형
'Web Framework > Django' 카테고리의 다른 글
[Django] Admin (0) | 2024.04.22 |
---|---|
[Django] Model 및 Database 2 (0) | 2024.04.22 |
[Django] Project 및 Application (0) | 2024.04.21 |
[Django] Django 개요 및 환경 설정 (0) | 2024.04.21 |
[Django] 학습 참고자료 (0) | 2024.03.09 |