Django筆記 Django REST framework的Serializer 2

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”}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章