除了用hyperlinks表示关系不一样以外,其它类似于modelserializer类。
serializer默认包含一个url字段代替主要关键字字段。这个url字段使用HyperlinkedIdentityField.
- 绝对路径
serializer = AccountSerializer(queryset, context={'request': request})
- 相对路径
serializer = AccountSerializer(queryset, context={'request': None})
How hyperlinked views are determined
默认情况下,hyperlinks按‘{model+name}-detail'的方式匹配,通过pk寻找instance.
- extra_kwargs设置view_name和lookup_field
class AccountSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Account
fields = ('account_url', 'account_name', 'users', 'created')
extra_kwargs = {
'url': {'view_name': 'accounts', 'lookup_field': 'account_name'},
'users': {'lookup_field': 'username'}
}
- 字段中指明
class AccountSerializer(serializers.HyperlinkedModelSerializer):
url = serializers.HyperlinkedIdentityField(
view_name='accounts',
lookup_field='slug'
)
打印HyperlinkedModelSerializer实例的repr是一种特别有用的方法来准确检查关系是否按预期映射
Changing the URL field nameURL_FIELD_NAME
ListSerializer设置many=True或则继承了ListSerializer就都在使用ListSerializer.
allow_empty属性默认true,判断是否允许空值。
list_serializer_class操作添加到meta里面可以定制对对象的操作.
BaseSerializer类可用于轻松支持替代序列化和反序列化样式。
在这样做时,您会注意到的唯一的区别是BaseSerializer类不会在可浏览的API中生成HTML表单。 这是因为他们返回的数据不包括所有的字段信息,这将允许每个字段被渲染成一个合适的HTML输入。
点击查看更多内容
1人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦