【问题标题】:How to delete empty field?如何删除空字段?
【发布时间】:2020-05-07 03:11:25
【问题描述】:

我有一个这样的 BaseModel

from pydantic import BaseModel

class TestModel(BaseModel):
    id: int
    names: str = None

当我验证一些这样的数据时

TestModel(id=123).dict() 

我得到了结果

{'id': 123, 'name': 无}

但我期望的是:

{'id': 123}

问题: 有没有删除空字段的方法?谢谢!

【问题讨论】:

  • 我找到了解决方案。首先,给该字段一个默认值None。然后,使用TestModel(id=123).dict(exclude_none=True) 排除它。

标签: pydantic


【解决方案1】:

正确的方法是使用

TestModel(id=123).dict(exclude_none=True)

如果您在任何地方都需要这个,您可以覆盖dict() 并更改默认值。

【讨论】:

    【解决方案2】:

    您或许可以添加一个 root_validator:

    @pydantic.root_validator(pre=False)
    def check(cls, values):
        if values['some_key'] is None
            del values['some_key']
    

    【讨论】:

      【解决方案3】:

      如果你想从字典中删除值为“None”的键:

      result = {k: v for k, v in result.items() if v is not None }
      

      【讨论】:

      • 但凡是使用validator的地方都必须有这个操作,和逻辑代码无关。是否可以在验证器中完成?谢谢!
      猜你喜欢
      • 2021-03-31
      • 1970-01-01
      • 1970-01-01
      • 2017-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多