继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Django rest framework之HyperlinkedModelSerializer笔记(三)

无无法师
关注TA
已关注
手记 44
粉丝 54
获赞 130

除了用hyperlinks表示关系不一样以外,其它类似于modelserializer类。
serializer默认包含一个url字段代替主要关键字字段。这个url字段使用HyperlinkedIdentityField.

Absolute and relative URLs
  • 绝对路径
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 name

URL_FIELD_NAME

ListSerializer

设置many=True或则继承了ListSerializer就都在使用ListSerializer.
allow_empty属性默认true,判断是否允许空值。
list_serializer_class操作添加到meta里面可以定制对对象的操作.

BaseSerializer

BaseSerializer类可用于轻松支持替代序列化和反序列化样式
在这样做时,您会注意到的唯一的区别是BaseSerializer类不会在可浏览的API中生成HTML表单。 这是因为他们返回的数据不包括所有的字段信息,这将允许每个字段被渲染成一个合适的HTML输入。
图片描述
图片描述

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP

热门评论

Direct assignment to the forward side of a many-to-many set is prohibited. Use asset_spec_value.set() instead.

在 api 多对多处理的时候,Post 报错,求帮忙

查看全部评论