반응형
    
    
    
  | 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 | 
 
										
									 
										
									 
										
									