模型字段(在 django 中)和序列化器字段(在 django rest 框架中)之间的区别

Dar*_*dow 7 python django django-rest-framework

由于我们可以使用传统的模型字段来验证值,那么为什么 Django REST Framework 包含自己的序列化器字段。我知道序列化器字段用于处理原始值和内部数据类型之间的转换。除此之外,他们之间还有什么不同。

bak*_*kal 10

那么有一个ModelSerializer可以根据您的模型字段自动提供序列化程序字段(考虑到您描述的二元性)。AModelSerializer允许您选择哪些模型字段将在序列化程序中显示为字段,从而允许您显示/隐藏某些字段。

模型中的字段通常与数据存储(例如数据库中的列)相关联。

DRFSerializer也可以在没有 Django 模型的情况下存在,因为它用于 API 和客户端之间的通信,并且它的字段可以采用多种形式,独立于模型和后备数据库,例如ReadOnlyFieldSerializerMethodField


eug*_*ene 6

模型字段是您保存在数据库中的内容。
(它回答您希望如何组织数据)

序列化器字段是您向客户公开的内容。
(它回答您希望如何表示数据)

对于models.ForeignKey(User)你的模型,

您可以在序列化程序中将其表示为一个Int字段,或UserSerializer(您将定义的),或http link指向用户的 api 端点。你可以用 来代表用户username,这取决于你想如何代表它。

使用 DRF,
您可以隐藏模型字段,将其标记为只读/只写。
您还可以添加不可映射到模型字段的字段。