【问题标题】:How to serialize model's all related models using pydantic如何使用 pydantic 序列化模型的所有相关模型
【发布时间】:2021-08-07 22:28:24
【问题描述】:

设置(龟甲模型):

class Hand(BaseModel):
    id: int
    fingers: fields.ReverseRelation["Finger"]


class Finger(BaseModel):
    id: int
    hand: fields.ForeignKeyField(model_name="models.User", related_name="fingers", null=True)

假设我们有一只手的 id,我们想要将其所有相关手指返回给用户。我应该如何为它创建 pydantic 模型,我应该如何查询所有提到的手指?

到目前为止我所做的尝试(没有运气):

#1

    Fingers_dto = pydantic_queryset_creator(Finger)
    hand = await Hand.get(pk=id).prefetch_related("fingers")
    return await Fingers_dto.from_queryset(hand.fingers)

#2

    Fingers_dto = Finger.create_query_set()
    hand = await Hand.filter(pk=id)
    await hand.fetch_related("fingers")
    return await Fingers_dto.from_queryset(hand.fingers)

【问题讨论】:

    标签: python serialization django-orm pydantic tortoise-orm


    【解决方案1】:

    为了实现这一点,我必须做到以下几点:

    Fingers_dto = pydantic_queryset_creator(Finger)
    hand = await Hand.get(pk=id)
    return await Fingers_dto.from_queryset(hand.fingers.all())
    

    【讨论】:

    • 如果你想返回一个手的列表,每个手都有一个手指列表?
    • hands = await Hand.all().prefetch_related("fingers") 我猜这将完成这项工作,那么您将得到一个简单的手列表,每个手都有一个手指列表。但是,您也可以先获取所有手,然后在需要时获取所有手指,如下所示:hands = await Hands.all() hands.fetch_related("fingers")
    猜你喜欢
    • 1970-01-01
    • 2021-09-17
    • 2019-09-09
    • 2020-03-21
    • 2021-03-29
    • 2014-02-15
    • 2018-05-31
    • 2021-02-15
    • 2023-02-25
    相关资源
    最近更新 更多