具有相同名称的模型的金字塔列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了具有相同名称的模型的金字塔列表相关的知识,希望对你有一定的参考价值。

比方说,我希望有一个User模型,其中也包含必须是用户列表的“ friends”字段:

class User(BaseModel):
    id: int
    name: str
    friends: List[User]

但是不可能。有没有办法实现这种行为?

答案

是,您需要使用update_forward_refs,请参阅文档中的self-referencing models

from typing import List

from devtools import debug

from pydantic import BaseModel


class User(BaseModel):
    id: int
    name: str
    friends: List['User']


User.update_forward_refs()

u = User(id=123, name='hello', friends=[dict(id=321, name='goodbye', friends=[])])

debug(u)

输出:

test.py:18 <module>
    u: User(
        id=123,
        name='hello',
        friends=[
            User(
                id=321,
                name='goodbye',
                friends=[],
            ),
        ],
    ) (User)

以上是关于具有相同名称的模型的金字塔列表的主要内容,如果未能解决你的问题,请参考以下文章

如何双击列表中具有相同 ID、索引和名称的元素

Mediaplayer在切换片段时没有暂停

C#如何组合具有相同名称的名称值对列表中的值? [复制]

如何比较具有不同名称引用但具有相同实际数据的两个列表

具有相同功能的活动和片段

使用相同名称时如何避免覆盖列表项?