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

时间:2016-02-01 11:44:36

标签: python django django-rest-framework

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

3 个答案:

答案 0 :(得分:4)

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

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

对于您的模型的models.ForeignKey(User)

您可以在序列化工具中将其表示为Int字段,或UserSerializer(您将定义),或指向用户的api端点的http link。 您可以使用username来表示用户,这取决于您希望如何表示它。

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

答案 1 :(得分:3)

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

模型中的字段通常绑定到数据存储(例如数据库中的列)。

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

答案 2 :(得分:2)

他们两个都指的是相同的东西,但有点不同。

模型字段在数据库中使用,即在创建模式时,仅对开发人员可见。

当序列化程序字段用于将api暴露给客户端时,客户端也可以看到。