由于我们可以使用传统模型字段验证值,因此Django REST Framework包含自己的序列化器字段。我知道序列化器字段用于处理原始值和内部数据类型之间的转换。除此之外,它们之间有什么不同。
答案 0 :(得分:4)
模型字段是您保存在数据库中的字段 (它回答您希望如何组织数据)
序列化程序字段是您向客户公开的内容 (它回答您希望如何表示数据)
对于您的模型的models.ForeignKey(User)
,
您可以在序列化工具中将其表示为Int
字段,或UserSerializer
(您将定义),或指向用户的api端点的http link
。
您可以使用username
来表示用户,这取决于您希望如何表示它。
使用DRF,
您可以隐藏模型字段,将其标记为只读/只写
您还可以添加一个不可映射到模型字段的字段。
答案 1 :(得分:3)
有一个ModelSerializer
可以根据你的模型字段自动提供序列化字段(考虑到你描述的二元性)。 ModelSerializer
允许您选择将哪些模型字段显示为序列化程序中的字段,从而允许您显示/隐藏某些字段。
模型中的字段通常绑定到数据存储(例如数据库中的列)。
DRF Serializer
也可以在没有Django模型的情况下存在,因为它用于在API和客户端之间进行通信,并且其字段可以是多种形式,独立于模型和后备数据库,例如, ReadOnlyField
,SerializerMethodField
等
答案 2 :(得分:2)
他们两个都指的是相同的东西,但有点不同。
模型字段在数据库中使用,即在创建模式时,仅对开发人员可见。
当序列化程序字段用于将api暴露给客户端时,客户端也可以看到。