@field_validator și @model_validator în Pydantic v2 în FastAPI

pydantic Pydantic v2 / FastAPI 0.100+ Q&A / Distribuie cod

Scrierea de validatori personalizați la nivel de câmp sau de model întreg în noul Pydantic v2 pentru reguli de business complexe.

Sintaxă
@field_validator('câmp') / @model_validator(mode='after')

Odată cu lansarea Pydantic v2 (scris nativ în Rust pentru viteză extremă), vechile adnotări @validator și @root_validator au fost înlocuite de noua API standardizată:

  • @field_validator('camp'): Validează și transformă valoarea unui singur atribut specific.
  • @model_validator(mode='after'): Rulează după ce toate câmpurile individuale au fost validate și permite validări încrucișate între mai multe câmpuri (de exemplu: verificarea că data de sfârșit este ulterioară datei de început).
Exemplu: Validare câmp CNP și validare încrucișată de parole
from pydantic import BaseModel, field_validator, model_validator

class RegisterRequest(BaseModel):
    username: str
    password: str
    confirm_password: str

    @field_validator("username")
    @classmethod
    def validate_username(cls, v: str) -> str:
        if not v.isalnum():
            raise ValueError("Numele de utilizator trebuie să conțină doar litere și cifre")
        return v.lower()

    @model_validator(mode="after")
    def verify_passwords_match(self):
        if self.password != self.confirm_password:
            raise ValueError("Parolele introduse nu coincid!")
        return self

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: @field_validator și @model_validator în Pydantic v2

Ai o nelămurire despre utilizarea comenzii @field_validator și @model_validator în Pydantic v2 sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.