7

私は次のPydanticモデルを持っています:

class Report(BaseModel):
    id: int
    name: str
    grade: float = None
    proportion: float = None

    @validator('*', pre=True)
    def blank_strings(cls, v):
        print(v)
        if v == "":
            return None
        return v

ここでの私の目標は、空の文字列を null 値として無視できるようにすることですが、うまくいかないようです。

Report(id=5,name="Steve",grade=0.5)proportion=Nonebut... Report(id=5,name="Steve",grade=0.5,proportion="")エラーをスロー するインスタンスを作成しますvalue is not a valid float (type=type_error.float)。最初のケースと同じ結果を得るにはどうすればよいですか?

4

2 に答える 2

3

これは pydantic==1.6.1 で動作します:

class Report(BaseModel):
    id: int
    name: str
    grade: Optional[float]
    proportion: Optional[float]

    @validator('proportion', pre=True)
    def blank_string(value, field):
        if value == "":
            return None
        return value

は、Optionalと同等の型制約を作成しUnion[float, None]ます。

空白文字列を None に変換すると、型制約が満たされます。

于 2021-06-30T19:49:45.273 に答える