Traffine I/O

Bahasa Indonesia

2023-03-12

Pra-Validasi dengan Pydantic

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:

python
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:

python
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

https://docs.pydantic.dev/usage/validators/

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!