Django-REST-Framework获取表和关联字段的值

首先在Django项目创建表

安装Django REST Framework:

pip install djangorestframework

以书籍和出版社为例(model.py):

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=32)
    create_time = models.DateField(auto_now_add=True)
    # 书籍的类型
    BookType = models.SmallIntegerField(
        choices=((1, "原创"), (2, "转载")),
        default=1
    )
    # 出版社(一对多)
    publish = models.ForeignKey(to='Publish', on_delete=models.CASCADE)
    # 标签(多对多)
    tag = models.ManyToManyField(to='Tag')

# 书籍出版社表
class Publish(models.Model):
    name = models.CharField(max_length=32)

# 书籍标签表
class Tag(models.Model):
    name = models.CharField(max_length=16)

自己动手在为每张表添加几条记录,并做好关联。

创建一个专门存放序列化类的py文件

serialize.py

from app01 import models
from rest_framework import serializers

class Serialize(serializers.ModelSerializer):
    # 表中有choices的字段时,此代码是将对应的描述信息显示到页面
    BookType = serializers.CharField(source='get_BookType_display')

    class Meta:
        # 要查找的表
        model = models.Article
        # 查找的字段,可以为一个列表
        fields = '__all__'
        # 查找关联外键的深度,官方建议不超过10
        depth = 1

接下来要写视图逻辑了

首先先在url.py里添加一个url

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^book_list/', views.Article_list.as_view()),
]

在views.py中:

from django import views
from app01 import models
from django.http import JsonResponse
from app01.serialize import Serialize # 这是从上面自己写的导入的
# Create your views here.


class Book_list(views.View):

    def get(self, request):
        article_list = models.Article.objects.all()
        # 实例化并把查询的结果传进去,当结果是多个时需要声明many=True
        ret = Serialize(article_list, many=True)
        # JsonResponse方法默认只能传递字典格式的数据,是其他格式时将safe改成False
        return JsonResponse(ret.data, safe=False)

此时用postman对后端进行get请求,得到的数据如下图:
image.png

猜你喜欢

转载自blog.csdn.net/weixin_43977375/article/details/90200746