Pydantic:将整个数据集传递到嵌套字段
短信预约 -IT技能 免费直播动态提醒
问题内容
我正在使用 django、django-ninja 框架来替换我的一些 api(用 drf 编写,因为它变得更像样板代码库)。现在,在转换一些旧版 api 时,我需要遵循旧的结构,这样客户端就不会遇到任何问题。这只是背景故事。
我有两个独立的模型。
class author(models.model):
username = models.charfield(...)
email = models.charfield(...)
... # other fields
class blog(models.model):
title = models.charfield(...)
text = models.charfield(...)
tags = models.charfield(...)
author = models.foreignkey(...)
... # other fields
django rest框架序列化器编写的结构
class blogbaseserializer(serializers.serializer):
class meta:
model = blog
exclude = ["author"]
class authorserializer(serializers.serializer):
class meta:
model = author
fields = "__all__"
class blogserializer(serializers.serializer):
blog = blogbaseserializer(source="*")
author = authorserializer()
在视图集中,将传递以下查询集
class blogviewset(viewsets.genericviewset, listviewmixin):
queryset = blog.objects.all()
serializer_class = blogserializer
... # other config
所以,当我切换到 django-ninja 时,它使用 pydantic 进行模式生成。 我有以下 pydantic 模式代码
AuthorSchema = create_schema(Author, exclude=["updated", "date_joined"])
class BlogBaseSchema(ModelSchema):
class Meta:
model = Blog
exclude = ["author", ]
class BlogSchema(Schema):
blog: BlogBaseSchema
author: AuthorSchema
但是正如你所看到的,drf序列化器有一个名为source
的参数,其中source="*"
表示将整个原始数据集传递给嵌套字段序列化器。是否有任何选项可以对 pydantic 执行完全相同的操作?
除了为查询集中的博客创建字典列表 [{author: blog.author, "blog": blog}]
正确答案
使用以下代码解决了问题
class AuthorSchema(ModelSchema):
class Meta:
model = Author
exclude=["updated", "date_joined"]
class BlogBaseSchema(ModelSchema):
class Meta:
model = Blog
exclude = ["author", ]
class BlogSchema(Schema):
blog: BlogBaseSchema
author: AuthorSchema
@staticmethod
def resolve_blog(self, obj):
return obj
以上就是Pydantic:将整个数据集传递到嵌套字段的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
Pydantic:将整个数据集传递到嵌套字段
下载Word文档到电脑,方便收藏和打印~
下载Word文档
猜你喜欢
Pydantic:将整个数据集传递到嵌套字段
问题内容我正在使用 django、django-ninja 框架来替换我的一些 api(用 drf 编写,因为它变得更像样板代码库)。现在,在转换一些旧版 api 时,我需要遵循旧的结构,这样客户端就不会遇到任何问题。这只是背景故事。我
2024-02-05
如何在解组时将整个 json 字符串传递到嵌套结构的字段?
在PHP中,当我们需要将整个JSON字符串传递给嵌套结构的字段时,有一种简单的方法可以实现。首先,我们需要确保我们已经将JSON字符串解码为PHP数组或对象。然后,我们可以使用json_encode()函数将解码后的数组或对象再次编码为JS
2024-02-13
将整个 yaml 从值传递到模板,而不用 null 填充空字段
php小编香蕉在本文中将介绍一个有趣的技巧,即将整个 YAML 从值传递到模板,而不用使用 null 来填充空字段。这个技巧可以提高代码的可读性和维护性,同时也能减少代码量。通过本文的讲解,读者将了解如何使用这个技巧,并学会在自己的项目中应
2024-02-11