美文网首页
Serializer Relations

Serializer Relations

作者: xncode | 来源:发表于2021-03-02 14:49 被阅读0次

    关系字段

    StringRelatedField

    使用目标的str方法来代表关系,需要参数many

    tracks = serializers.StringRelatedField(many=True)
    
    'tracks': [
        '1: Sunflower',
        '2: Whitetail',
        '3: Dinosaur Act',
        ...
    ]
    

    PrimaryKeyRelatedField

    需要参数queryset many allow_null pk_field

    tracks = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
    
    'tracks': [
        89,
        90,
        91,
        ...
    ]
    

    HyperLinkRelatedField

    SlugRelatedField

    HyperlinkedIdentifyField

    嵌套关系

    使用序列化器作为字段

    tracks = TrackSerializer(many=True, read_only=True)
    
    'tracks': [
        {'order': 1, 'title': 'Public Service Announcement', 'duration': 245},
        {'order': 2, 'title': 'What More Can I Say', 'duration': 264},
        {'order': 3, 'title': 'Encore', 'duration': 159},
        ...
    ],
    

    默认是只读的,如果想用写操作,需要创建create update

    自定义关系字段

    实现to_representation,该方法接收一个参数通常为model,实现to_internal_value,实现读写
    如果想要动态的queryset(基于context),可以重载get_queryset而不是修改queryset

    queryset参数只对可写的字段有意义,用于model实例的查询,从用户的原始输入映射到model实例上

    逆向关系

    注意 逆向关系不会自动被包含,需要使用fields来指定 (例如track_set)

    中间人的多对多

    默认是只读的

    相关文章

      网友评论

          本文标题:Serializer Relations

          本文链接:https://www.haomeiwen.com/subject/zpmzdxtx.html