DjangoRestFrameworkNotes

title: Django Rest Framework 笔记 tags:

  • Django

  • Django Rest Framework

    categories:

  • Python

Serializers

RelationShip

# coding: utf-8
# @author   bovenson
# @email    [email protected]
# @desc     Django Rest Framework Serializers

from rest_framework import serializers
from book.models import *
from cloudlibraryserver.settings import IMAGE_SOURCE, IMG_URL


class ScoreSerializer(serializers.ModelSerializer):
    """书籍评分"""
    class Meta:
        model = BookScore
        fields = '__all__'


class BookAuthorSerializer(serializers.ModelSerializer):
    """书籍作者"""
    class Meta:
        model = BookAuthor
        fields = '__all__'


class BookTagSerializer(serializers.ModelSerializer):
    """书籍标签"""
    class Meta:
        model = BookTag
        fields = '__all__'


class BookSerializer(serializers.ModelSerializer):
    """书籍"""
    score = ScoreSerializer(many=False, read_only=True)
    author = BookAuthorSerializer(many=True, read_only=True)
    tags = BookTagSerializer(many=True, read_only=True)

    class Meta:
        model = Book
        fields = ['name', 'summary', 'pic', 'score', 'author', 'tags']

    def to_representation(self, instance):
        # 修改图片URL
        ret = super().to_representation(instance)
        # 七牛储存
        if IMAGE_SOURCE == 'QINIU':
            ret['pic'] = IMG_URL + ret['pic'][len('/media'):]
        return ret


class BooklistSerializer(serializers.HyperlinkedModelSerializer):
    """书单"""
    class Meta:
        model = BookList
        fields = ['id']

Order

获取单个记录

设置ModelViewSet之后,会默认增加view_url/pk/

使用不同Serilizer同一模型

urls.py

返回树

需求描述

返回数据库表中描述的分类树

Model

Serializer

ViewSet

预览

GET /api/article/category/tree/

分页

File Tree

自定义分页类

pagination.py

settings

对于自定义action进行分页

参考

最后更新于