Menggunakan Pre=True untuk Pra-Validasi
Pra-validasi adalah fitur yang sangat bermanfaat dalam Pydantic yang memungkinkan pengembang untuk memproses dan memodifikasi data input sebelum melewati prosedur validasi standar. Hal ini sangat bermanfaat ketika bekerja dengan input pengguna atau data dari sumber eksternal, yang mungkin memerlukan pembersihan, transformasi, atau pemformatan ulang sebelum divalidasi dengan tipe data yang ditentukan pada field.
Untuk menggunakan flag pre=True
pada model Pydantic Anda, Anda perlu menyertakannya sebagai argumen kata kunci dalam dekorator @validator
. Berikut adalah contoh cara melakukannya:
from pydantic import BaseModel, validator
class MyModel(BaseModel):
field: str
@validator('field', pre=True)
def clean_field(cls, value):
# Implement pre-validation logic here
return value
Pada contoh di atas, sebuah model Pydantic bernama MyModel
didefinisikan, dengan satu field bernama field
dengan tipe data str
. Dekorator @validator
diterapkan pada metode kelas yang dinamakan clean_field
, yang bertanggung jawab untuk memproses data input sebelum divalidasi.
Flag pre=True
, yang diteruskan sebagai argumen kata kunci dalam dekorator @validator
, menandakan bahwa metode clean_field
harus dijalankan sebelum validasi standar. Dalam metode ini, Anda dapat menerapkan logika pra-validasi apa pun yang diperlukan untuk membersihkan atau mengubah bentuk data input. Misalnya, Anda dapat menghapus karakter yang tidak diinginkan, mengonversi data ke format tertentu, atau melakukan tugas manipulasi data lainnya. Setelah proses pra-pemrosesan selesai, kembalikan nilai yang sudah dimodifikasi, yang kemudian akan diteruskan ke proses validasi standar.
Mengimplementasikan Fungsi Pra-Validasi Kustom di Pydantic
Selain menggunakan flag pre=True
dalam dekorator @validator
, Pydantic memungkinkan pengembang untuk mengimplementasikan fungsi pra-validasi kustom yang meningkatkan kemampuan pemrosesan data. Fungsi pra-validasi kustom dapat sangat berguna untuk menangani tugas manipulasi data yang kompleks atau untuk mengulang logika pra-validasi pada beberapa field atau model.
Untuk menunjukkan bagaimana membuat dan menggunakan fungsi pra-validasi kustom, pertimbangkan contoh berikut:
from pydantic import BaseModel, validator
def strip_whitespace(value: str) -> str:
return value.strip()
class MyModel(BaseModel):
field1: str
field2: str
@validator('field1', 'field2', pre=True)
def apply_strip_whitespace(cls, value):
# Utilize the custom pre-validation function
return strip_whitespace(value)
Pada contoh di atas, sebuah fungsi pra-validasi kustom bernama strip_whitespace
didefinisikan di luar kelas MyModel
. Fungsi ini menerima nilai string sebagai input dan mengembalikan nilai yang sama dengan menghapus spasi kosong pada bagian awal dan akhir.
Metode kelas apply_strip_whitespace
pada kelas MyModel
di-dekorasi dengan dekorator @validator
dan flag pre=True
. Metode ini bertanggung jawab untuk menerapkan fungsi strip_whitespace
pada kedua field, field1
dan field2
, sebelum divalidasi secara standar.
Dengan mengimplementasikan fungsi pra-validasi kustom seperti strip_whitespace
, pengembang dapat membuat logika manipulasi data yang dapat digunakan kembali untuk diterapkan pada beberapa field atau model. Pendekatan ini tidak hanya membantu menjaga kode yang lebih bersih dan terorganisir, tetapi juga mendorong konsistensi dan keandalan dalam pengelolaan data pada seluruh aplikasi.
Referensi