【问题标题】:How to add pydantic field validation for django model?如何为 django 模型添加 pydantic 字段验证?
【发布时间】:2021-10-05 09:45:51
【问题描述】:

所以,我有一个django模型,比方说,它的字段划分如下:

class ModelA(models.Model):
    f1 = models.CharField(max_length=127)
    f2 = models.CharField(max_length=127)

我想创建一个 pydantic 类,其字段类型包含这些模型的列表。考虑以下示例:

class TestPydanticClass(BaseModel):
    model_a_values: List[ModelA]
    f4: int

当我尝试创建 TestPydanticClass 对象时,它会引发以下错误:

RuntimeError: no validator found see `arbitrary_types_allowed` in Config

基于此,我在模型的Config 类下添加了arbitrary_types_allowed 为True,但它仍然会抛出错误。 有人可以提出一个更好的方法来实现这一点吗?

【问题讨论】:

  • 如果ModelA 可以属于多个 TestPydanticClass,则可以使用从ModelATestPydanticClassForeignKeyManyToManyFIeld es.
  • 为什么需要 MTMField? TestPydanticClass 是一个 pyddantic 模型
  • 它会抛出同样的错误还是其他错误?
  • 同样的错误。 RuntimeError: no validator found for <class 'ModelA'>, see `arbitrary_types_allowed` in Config
  • 奇怪!我在这里做了同样的事情(设置任意类型允许=真)并且错误没有出现!

标签: django django-models pydantic


【解决方案1】:

你是在 BaseModel 内部这样设置的吗?

class TestPydanticClass(BaseModel):
    model_a_values: List[ModelA]
    f4: int

    class Config:
        arbitrary_types_allowed = True

【讨论】:

    猜你喜欢
    • 2020-12-09
    • 2016-02-01
    • 2010-12-10
    • 2019-12-24
    • 2020-05-19
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    相关资源
    最近更新 更多