Django--序列化器的使用

本文详细介绍了Django序列化器的使用,包括基本操作、关联对象的嵌套序列化,以及如何处理多对多关系。通过示例展示了PrimaryKeyRelatedField、HyperlinkedRelatedField、SlugRelatedField的用法,并探讨了重写to_representation方法来自定义序列化格式。最后,解释了在处理多个关联对象时如何使用many参数。

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

利用Django的shell来 进行序列化器的演示

基本使用 

进入 python manage.py shell

(django_py3_1.11) python@ubuntu:~/pycharm/Django/demo01$ python manage.py shell
Python 3.5.2 (default, Nov 23 2017, 16:37:01) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)

1,导入图书 和 序列化器的类模型

2,查询id=2的实例化图书对象

3,构造序列器对象

4,创建data空字典

5,通过data属性获取序列化后的数据

>>> from booktest.models import BookInfo         
>>> from booktest.serializers import BookInfoSerializer
>>> book = BookInfo.objects.get(id=2)
>>> s = BookInfoSerializer(book)
>>> data = {}
>>> s.data
{'is_delete': False, 'bpub_date': '1986-07-24', 'id': 2, 'bcomment': 40, 'bread': 36, 'btitle': '天龙八部', 'image'ne}

6,如果要被序列化的是包含多条数据的查询集QuerySet,可以通过many = true参数补充说明

>>> qs = BookInfo.objects.all()
>>> s = BookInfoSerializer(qs,many=True)
>>> data = {}
>>> s.data
[OrderedDict([('id', 1), ('btitle', '射雕英雄传'), ('bpub_date', '1980-05-01'), ('bread', 12), ('bcomment', 34), ('lete', False), ('image', None)]), OrderedDict([('id', 2), ('btitle', '天龙八部'), ('bpub_date', '1986-07-24'), ('br, 36), ('bcomment', 40), ('is_delete', False), ('image', None)]), OrderedDict([('id', 3), ('btitle', '笑傲江湖'), (b_date', '1995-12-24'), ('bread', 200), ('bcomment', 80), ('is_delete', False), ('image', None)]), OrderedDict([('id', 4), ('btitle', '雪山飞狐'), ('bpub_date', '1987-11-11'), ('bread', 58), ('bcomment', 24), ('is_delete', False),mage', None)]), OrderedDict([('id', 5), ('btitle', '西游记'), ('bpub_date', '1998-01-01'), ('bread', 69), ('bcommen 13), ('is_delete', False), ('image', None)]), OrderedDict([('id', 6), ('btitle', '红楼梦'), ('bpub_date', '1988-09'), ('bread', 78), ('bcom
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值