Sa sagen, ich habe das folgende pydantische 2.10.6-Modell, wobei x aus einem anderen Feld dynamisch berechnet wird, y :
from pydantic import BaseModel, Field, field_validator, ValidationInfo
class Foo(BaseModel):
x: int = Field(init=False)
y: int
@field_validator("x", mode="before")
@staticmethod
def set_x(val: None, info: ValidationInfo):
return info.data["y"] + 1
Foo(y=1)
< /code>
Ausführen, wie dies fehlschlägt, validieren: < /p>
pydantic_core._pydantic_core.ValidationError: 1 validation error for Foo
x
Field required [type=missing, input_value={'y': 1}, input_type=dict]
< /code>
Ich kann den Laufzeitfehler "fixieren", indem er X < /code> a Standard angibt: < /p>
x: int = Field(init=False, default=None)
< /code>
, aber dann schlägt dies fehlschlug, wenn Sie das Überprüfungen im Pyright mit: < /p>
gebenType "None" is not assignable to declared type "int"
< /code>
Ich kann es auch mit einem model_validator < /code> beheben, aber dies ist ein bisschen weniger ordentlich: < /p>
from pydantic import BaseModel, Field, model_validator
class Foo(BaseModel):
x: int = Field(init=False)
y: int
@model_validator(mode="before")
@staticmethod
def set_x(data: dict):
data["x"] = data["y"] + 1
return data
Foo(y=1)
< /code>
Wie kann ich dieses Modell nur mit einem Feld Validator mithilfe eines Feldvalidators sauber darstellen?>
Stellen Sie den Anfangswert eines pydantischen 2 -Feldes mit Validator fest ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post