首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django Rest框架-仅用于反序列化的序列化字段

Django Rest框架-仅用于反序列化的序列化字段
EN

Stack Overflow用户
提问于 2016-02-19 03:48:16
回答 1查看 1.2K关注 0票数 0

我正在编写一个简单的API,用于使用Django Rest框架加密/解密密文,我想知道是否可以在序列化程序中定义仅用于反序列化(即仅用于验证)的函数。例如,我有一个名为Message的模型类,我有一个视图,允许用户创建Message对象。当我调用serializer.is_valid()时,我想检查一个名为plaintext的字段是否为空/空,但是当我向用户显示一个Message时,我希望将plaintext字段变成一个HyperlinkedIdentityField,而不是直接显示它。换句话说,我希望用户能够发布这样的消息:

代码语言:javascript
运行
复制
{ 
  "plaintext": "blah",
  "key": "tunafish"
}

然后,在对其进行验证之后,我将向用户展示如下内容:

代码语言:javascript
运行
复制
{
  "plaintext": "link/to/plaintext",
  "ciphertext": "link/to/ciphertext",
  "key": "tunafish"
}

仅用一个序列化程序就可以做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-19 04:02:53

Django Rest Framework序列化程序有两个函数,您可以重写这些函数,以便对传入和输出字段具有自定义(不同)行为:to_internal_value (来自dict)和to_representation (来自django模型实例)。

在您的例子中,我将使该字段成为一个HyperlinkedIdentityField,并在to_internal_value中执行您需要做的任何工作,以便在您的实例和plaintext实例之间创建关系。

请参阅有关创建自定义字段api - http://www.django-rest-framework.org/topics/3.0-announcement/#changes-to-the-custom-field-api的文档。

或者在这里阅读源代码- framework/serializers.py

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35496952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档