Pydantic에서 validator는 모델의 특정 필드나 모델 전체에 대해 유효성 검사를 수행하는 함수입니다. field_validator는 개별 필드의 값을 검사하고, model_validator는 모델의 여러 필드 간의 상호작용을 검증합니다. 이러한 validator를 통해 데이터의 무결성을 보장하며, 유효성 검사 규칙을 코드에 통합하여 잘못된 데이터를 방지할 수 있습니다.
Pydantic v2에서 제공하는 model_validator와 field_validator는 각각 모델 전체와 개별 필드 수준에서 유효성을 검사하는 데 사용됩니다.
model_validator
- 적용 범위: 모델 수준에서 작동
- 용도: 여러 필드를 함께 검증하거나, 모델 전체가 초기화된 후 특정 검증 로직을 실행
- 사용 예시: 서로 연관된 필드들 간의 일관성을 보장해야 할 때 유용
from pydantic import BaseModel, model_validator
class User(BaseModel):
password: str
confirm_password: str
@model_validator(mode='after')
def check_passwords(cls, values):
if values['password'] != values['confirm_password']:
raise ValueError('비밀번호가 일치하지 않습니다.')
return values
# 사용 예시
user = User(password="secret", confirm_password="secret") # 유효
field_validator
- 적용 범위: 개별 필드에 적용
- 용도: 각 필드의 값에 대해 개별적으로 유효성을 검사
- 사용 예시: 특정 필드 값에 대해 포맷팅이나 제약을 적용할 때 유용
from pydantic import BaseModel, field_validator
class User(BaseModel):
name: str
age: int
@field_validator('age')
def check_age(cls, v):
if v < 18:
raise ValueError('나이는 18세 이상이어야 합니다.')
return v
# 사용 예시
user = User(name="Alice", age=20) # 유효
+) 지정한 데이터 타입과 다르게 들어왔을때 처리도 가능하다.
from pydantic import BaseModel, field_validator
class Prompt(BaseModel):
prompt: str
@field_validator('prompt', mode="before")
@classmethod
def validate_prompt(cls, value):
if value is None:
value = ""
return value
# 사용 예시
prompt = Prompt(prompt=None)
'python' 카테고리의 다른 글
Fastapi 애플리케이션 로깅 : YAML 설정으로 로깅 구성하는 법(timestamp 추가) (5) | 2024.10.31 |
---|---|
파이썬 파일 경로 처리: splitext로 파일명과 확장자 쉽게 분리하기 (0) | 2024.09.10 |
파이썬에서 문자열이 공백인지 쉽게 확인하는 3가지 방법 (0) | 2024.08.27 |
python dictionary 합치기 (0) | 2024.08.27 |
Python Requests 라이브러리 완벽 정리: 기능과 사용법 소개 (1) | 2024.08.21 |