🔤 문자 필드
필드 | 설명 | 주요 옵션 |
CharField | 고정 길이 문자열 (짧은 텍스트) | max_length (필수) |
TextField | 길이 제한 없는 긴 문자열 | 제한 없음 |
title = models.CharField(max_length=100)
description = models.TextField()
🔢 숫자 필드
필드 | 설명 | 주요 옵션 |
IntegerField | 정수 | default, null, blank |
PositiveIntegerField | 양의 정수 (0 포함) | Django 4.0 이후 PositiveIntegerField 사용 비추천, 대신 IntegerField(validators=[MinValueValidator(0)]) |
FloatField | 부동 소수점 숫자 | 실수 값 저장 |
DecimalField | 고정 소수점 숫자 (금액 등) | max_digits, decimal_places 필수 |
price = models.DecimalField(max_digits=6, decimal_places=2) # 예: 9999.99
views = models.IntegerField(default=0)
📅 날짜/시간 필드
필드 | 설명 | 주요 옵션 |
DateField | 날짜 (YYYY-MM-DD) | auto_now, auto_now_add |
DateTimeField | 날짜 + 시간 | auto_now, auto_now_add |
TimeField | 시간만 (HH:MM:SS) | 잘 사용되지는 않음 |
created_at = models.DateTimeField(auto_now_add=True) # 생성 시 자동 기록
updated_at = models.DateTimeField(auto_now=True) # 저장할 때마다 자동 갱신
✅ 불리언 필드
필드 | 설명 |
BooleanField | True / False |
NullBooleanField | True / False / None (장고 3.1부터 deprecated) |
is_published = models.BooleanField(default=True)
🔗 관계형 필드
필드 | 설명 |
ForeignKey | 다대일 관계 (1:N) |
OneToOneField | 일대일 관계 (1:1) |
ManyToManyField | 다대다 관계 (N:M) |
author = models.ForeignKey(User, on_delete=models.CASCADE)
profile = models.OneToOneField(Profile, on_delete=models.CASCADE)
tags = models.ManyToManyField(Tag)
📌 주요 공통 옵션
- null=True: 데이터베이스에 NULL 허용
- blank=True: 폼에서 빈 값 허용
- default=값: 기본값 설정
- choices=[(값1, 표시명1), (값2, 표시명2)]: 제한된 선택지 제공
- unique=True: 유일한 값
- verbose_name='레이블명': 관리자 페이지에서 표시되는 필드명
💡 예시 모델 전체
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
views = models.IntegerField(default=0)
is_published = models.BooleanField(default=True)
반응형
'그냥 끄적끄적' 카테고리의 다른 글
[사이드 프로젝트] 실시간 채팅 웹 서비스 - 2 (Django APP 생성 및 연동) (0) | 2025.04.29 |
---|---|
[사이드 프로젝트] 실시간 채팅 웹 서비스 - 1 (환경 구성) (1) | 2025.04.29 |
[사이드 프로젝트] 실시간 채팅 웹 서비스 - 0 (0) | 2025.04.29 |
인터파크 매크로 만들기 [4. 좌석 선점하기 - 마무리] (4) | 2023.12.01 |
인터파크 매크로 만들기 [4. 좌석 선점하기 - 1] (1) | 2023.12.01 |