Django笔记 Django REST framework的Serializer 2

本文介绍了如何使用Django REST框架的Serializer来隐藏特定字段及显示外键的具体信息,并提供了具体的实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值