首页 > 其他分享 >Django DRF接口开发之多表字段数据返回

Django DRF接口开发之多表字段数据返回

时间:2023-02-23 23:36:44浏览次数:36  
标签:返回 表字 接口 Django Model 序列化 Serializer DRF

    关于 Serializer 序列化数据,一般情况一个实体 Model 对应一个 Serializer,其实功能跟FromModel有点类似。但是在涉及到多表关联查询,序列化数据接口进行返回时,无法返回多个 Model 对象字段 。在网上查了很久的资料,发现有两种方法,亲测有效。

    1. 首先定义 Model 类


    1-1

    然后在 serializer.py 文件中定义两个 Model 对象:GroupSerializer、ConfigurationSerializer,在 ConfigurationSerializer 里面实例化GroupSerializer 类,然后把变量添加到fields中,这样就可以把外键关联的表字段通过接口返回了。


 

 

 

  1-2

    看一下接口实际返回的结果,红色框标出来的就是返回的外键关联表的字段了。

 

 

 

  1-3

 


2.想要多个model数据序列化在一个返回中,可以使用 DjangoRestMultipleModels ,首先安装:

   pip install django-rest-multiple-models

 

 

 

 

    1-4

    然后在 Serializer 定义两个对象,可以参考1-2图,然后在 views.py 使用就行。这样输出的结果对象是两个list。

 

 

 

  1-5

    如果想直接生成一个list对象的话,那就继承 FlatMultipleModelAPIView 类。使用方法类似

 

 

 

 

大致的实现方式就是这样,如果有不正确或者疑问的可以留言给我,虽然有些资料是网上查找的。但是亲测可用使用

标签:返回,表字,接口,Django,Model,序列化,Serializer,DRF
From: https://www.cnblogs.com/clark1990/p/17149860.html

相关文章

  • 35-DRF框架-生成接口文档
    #注意:只能是ApiView及子应用#1.安装coreapi库#2.主应用中配置路径url(r'^docs/',include_docs_urls(title='接口文档'))#3.主应用中settings.py配置......
  • 34-DRF框架-视图及扩展类
    #GenericAPIView继承自APIVIew,增加了对于列表视图和详情视图可能用到的通用支持方法。#常用属性'''queryset列表视图的查询集serializer_class视图使......
  • 33-DRF框架-反序列化使用
    #增加修改#把参数转成model对象,操作数据库#步骤:#1.创建序列化对象data传递参数进行验证#2.is_validate()函数验证#3.通过可以使用validated......
  • DRF思维导图及知识点总结(很值得一看的博客)
    DRF思维导图及知识点总结1.视图类-viewview:djngo自带的请求对象:Django默认的HttpRequest对象获取数据: Get请求数据:request.GETPOST、PUT等请求......
  • Django级联删除的选项
    Django模型中的on_delete属性具有如下选项:CASCADE级联删除,也就是被引用的实体被删除后,相关的记录信息都会被删除。PROTECT阻止删除被引用的实体,除非先把所有引用的记录......
  • Django CSRF认证的几种解决方案
    什么是CSRF浏览器在发送请求的时候,会自动带上当前域名对应的cookie内容,发送给服务端,不管这个请求是来源A网站还是其它网站,只要请求的是A网站的链接,就会带上A网站的cookie......
  • Django 模型 Meta 选项详解
    1.了解Meta内部类每个模型类(Model)下都有一个子类Meta,这个子类就是定义元数据的地方。Meta类封装了一些数据库的信息,称之为Model的元数据。Django会将Meta中的......
  • 32-DRF框架-序列化器ModelSerializer
    #如果我们想要使用序列化器对应的是Django的模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建一个Serializer类创建modelserializer序列化器#......
  • Django框架课-创建游戏界面 (2)
    Django框架课-创建游戏界面(2)bug修改bug1:获取鼠标在画布中的相对坐标之前写的只是直接获取在屏幕中的坐标,默认画布是在左上角的,如果acapp的窗口不在屏幕左上角,获取到......
  • Django路由层
    目录Django路由pathDjango自带url参数转换器url转换器具体使用方法re_path路由匹配冲突re_path无名有名分组无名分组有名分组反向解析反向解析静态路由反向解析动态路由Dj......