您的位置:首页 > 编程语言 > Go语言

Django笔记 Django REST framework的Serializer 2

2016-04-21 17:10 351 查看

Serializer的几种设置

隐藏特定字段

如下,设置 writer 为只读就可以隐藏。

class ArticleSerializer(serializers.ModelSerializer):
+   writer = serializers.IntegerField(write_only=True)
class Meta:
model = Article


$ curl http://localhost:8000/api/articles/3.json

{“id”:3,”title”:”hoge”,”contents”:”fuga”}

writer消失不见了。

外键不是key值,显示具体信息

class ArticleSerializer(serializers.ModelSerializer):
+   writer = WriterSerializer()
class Meta:
model = Article


将writer字段设为WriterSerializer

$ curl http://localhost:8000/api/articles/3.json

{“id”:3,”writer”:{“id”:1,”name”:”racchai”},”title”:”hoge”,”contents”:”fuga”}

就可以显示具体的信息

同时生成外键数据时

ArticleSerializer如下

class ArticleSerializer(serializers.ModelSerializer):
writer = WriterSerializer()
class Meta:
model = Article

+   def create(self, validated_data):
+       writer = Writer(**validated_data.pop('writer'))
+       writer.save()
+       return super(ArticleSerializer, self).create(dict(validated_data, **{'writer': writer}))


在默认的 create 前生成Writer数据。

测试为

$ curl http://localhost:8000/api/articles.json -X POST -d “{\”writer\”:{\”name\”:\”new writer\”},\”title\”:\”aaa\”,\”contents\”:\”bbb\”}” -H “Content-Type: application/json” │

{“id”:4,”writer”:{“id”:2,”name”:”new writer”},”title”:”aaa”,”contents”:”bbb”}

就可以登录了。

测试一下。

$ curl http://localhost:8888/api/articles/4.json

{“id”:4,”writer”:{“id”:2,”name”:”new writer”},”title”:”aaa”,”contents”:”bbb”}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  django 框架 rest