Cara Mengabaikan Nilai Tidak Valid Saat Membuat Instans Model
Gambaran Umum Error
Dalam pengembangan perangkat lunak, khususnya saat menggunakan pustaka Pydantic di Python, Anda mungkin menghadapi error yang berbunyi “How to ignore invalid values when creating model instance”. Error ini muncul ketika Anda mencoba membuat instans model dengan nilai yang tidak valid, dan Pydantic secara default akan menolak instans tersebut. Artikel ini akan membahas penyebab umum dari masalah ini dan memberikan beberapa solusi yang dapat Anda terapkan untuk mengabaikan nilai tidak valid dalam instans model.
Penyebab Umum
Penyebab umum dari error ini adalah penggunaan nilai yang tidak sesuai dengan tipe data yang didefinisikan dalam model Pydantic. Misalnya, jika Anda memiliki model yang mengharapkan nilai integer tetapi menerima string, maka Pydantic akan menolak nilai tersebut.
Berikut adalah beberapa penyebab umum:
1. Tipe Data yang Tidak Sesuai: Memasukkan nilai yang tidak cocok dengan tipe data yang didefinisikan.
2. Validasi yang Ketat: Pydantic melakukan validasi yang ketat pada nilai yang diberikan.
3. Penggunaan Field yang Wajib: Jika model memiliki field wajib dan nilainya tidak valid, maka instans tidak dapat dibuat.
Metode Solusi
Ada beberapa cara untuk menangani error ini dan mengizinkan instans model dibuat meskipun ada nilai yang tidak valid.
Metode 1: Menggunakan WrapValidator
Salah satu solusi yang paling sederhana adalah menggunakan WrapValidator untuk menangani nilai tidak valid. Berikut adalah contoh implementasinya:
“`python
from collections.abc import Callable
from typing import Annotated, Any
from pydantic import BaseModel, ValidationError, WrapValidator
def invalid_to_none(v: Any, handler: Callable[[Any], Any]) -> Any:
try:
return handler(v)
except ValidationError:
return None
class Foo(BaseModel):
age: Annotated[int | None, WrapValidator(invalid_to_none)]
name: str | None
Membuat instans model
instance = Foo(age=”invalid”, name=”Jim”)
print(instance.model_dump()) #

コメント