Pydantic 在将模型传递给另一个模型的构造函数时复制模型。这失败了:
from pydantic import BaseModel
class Child(BaseModel):
pass
class Parent(BaseModel):
child: Child
child = Child()
parent = Parent(child=child)
assert parent.child is child
# Fails
Run Code Online (Sandbox Code Playgroud)
当将其传递给父级的构造函数时,它似乎被复制,因此和 的child标识不相同。我希望它们与我稍后需要修改的属性相同,并且更改应该在.childparent.childchildparent.child
如何让 Pydantic 不复制孩子?
我自己找到了答案。似乎这是一个问题,但已通过创建配置选项在 PR 中修复。如果针对子项设置此选项,则不会在构造中复制子项。 copy_on_model_validationFalse
这不会复制孩子:
from pydantic import BaseModel
class Child(BaseModel):
class Config:
copy_on_model_validation = False
class Parent(BaseModel):
child: Child
child = Child()
parent = Parent(child=child)
assert parent.child is child
# Passes
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2697 次 |
| 最近记录: |