1. Model 구조
from django.db import models
class ModelName(models.Model):
class Status(models.TextChoices):
Select1 = 'Value1', 'Label1'
Select2 = 'Value2', 'Label2'
field_name1 = models.CharField()
field_name2 = models.CharField(max_length=2,
choices=Status.choices,
default=Status.Select1)
class Meta:
ordering = ['field_name1',]
indexes = [
models.Index(fields=['-field_name1']),
]
def __str__(self):
return self.title
2. Field 종류
1) models.BigAutoField(): SQL의 Integer로 변환
- settings.py의 DEFAULT_AUTO_FIELD 설정으로 전역지정
- 자동 증가하는 사용가능한 64비트 정수 ID
- 모델에 PK 미지정시 자동으로 해당 필드를 id로 등록
2) models.CharField(): SQL의 VARCHAR로 변환
- max_length
3) models.SlugField(): SQL의 VARCHAR로 변환
- max_length
4) models.TextField(): SQL의 TEXT로 변환
5) models.DateTimeField(): SQL의 DATETIME으로 변환
- default, auto_now_add, auto_now
6) models.ForeignKey(Model, on_delete, related_name): 다대일 관계를 정의
- on_delete(참조 객체 삭제시 선택할 동작), related_name(역방향 관계 명칭)
- 1:N의 관계에서 N의 관계에 있는 모델에 정의
7)
8)
3. Meta 클래스
1) ordering
- 쿼리에 특정 순서가 제공되지 않는 경우 데이터베이스 쿼리에 기본적으로 적용
- 필드명 앞에 '-'를 붙여 내림차순을 표현
- MYSQL에서는 순서가 지정불가. 자동으로 내림차순 인덱스로 생성됨
2) indexes
- 데이터베이스 인덱스 정의
3) db_table
- 데이터베이스 이름 지지ㅓㅇ
4. 상태 필드
1) models.TextChoices 상속
2) 선택항목, 값,명칭 정의
3) Status.choices(선택항목), Status.labels(명칭), Status.values(실제값), Status.names(명칭)
4) Status.명칭과 같은 특정 항목에 접근하여 해당 항목의 label, name, value 속성에도 접근 가능함
5. Method 종류
1)
6. 모델 마이그레이션
- 변경된 모델과 동기화하기 위해 데이터베이스에서 수행할 다른 마이그레이션 및 작업에 대한 종속성을 명시함
1) 마이그레이션
2) SQL 출력 확인
- 인덱스 생성: Meta 클래스의 indexes 옵션에 명시, SlugField와 ForeignKey는 기본적으로 인덱스 생성
3) 마이그레이션 적용
Reference
- [Django: Model] https://docs.djangoproject.com/en/5.2/topics/db/models/
- [Django: Models] https://docs.djangoproject.com/en/5.2/ref/models/
- [Django: Model Field] https://docs.djangoproject.com/en/5.2/ref/models/fields/
- [Django: Model Meta] https://docs.djangoproject.com/en/5.2/ref/models/options/#django.db.models.Options.indexes
- [Django: Model Index] https://docs.djangoproject.com/en/5.2/ref/models/indexes/
- [Django: Model Relation] https://docs.djangoproject.com/en/5.2/ref/models/relations/
- [Django: QuerySet] https://docs.djangoproject.com/en/5.2/ref/models/querysets/
'Django' 카테고리의 다른 글
| [Django] 기본 - Admin (0) | 2025.10.31 |
|---|---|
| [Django] 기본 - URL 처리 (0) | 2025.10.29 |
| [Django] 관리자 생성 및 테스트 서버 실행 (0) | 2025.10.29 |
| [Django] 설정(settings.py) (0) | 2025.10.29 |
| [Django] 애플리케이션 생성 및 구조 (0) | 2025.10.29 |