如何使用 Pydantic 验证模型中的两个日期? end_date 大于 init_date

问题描述 投票:0回答:1

我有一个 Pydantic 模型,其中有两个日期(init_date 和 end_date)

在尝试添加到数据库之前,我需要确保 end_date 在 init_date 之后(有必要计算这两个日期的天数增量)。

python pydantic
1个回答
0
投票

在这种情况下,您需要使用模型验证器。通过指定 mode="after",我们可以配置一些自定义逻辑,以便在验证基础数据后在模型上运行。

https://docs.pydantic.dev/latest/concepts/validators/#model-validators

一个示例:

from datetime import datetime

from pydantic import BaseModel, model_validator


class MyModel(BaseModel):
    init_date: datetime
    end_date: datetime

    @model_validator(mode="after")
    def _validate_dates(self):
        if self.init_date > self.end_date:
            raise ValueError("init_date must be before end_date")
        return self
© www.soinside.com 2019 - 2024. All rights reserved.