首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将连接表中的字段包含在查询集中?

如何将连接表中的字段包含在查询集中?
EN

Stack Overflow用户
提问于 2017-07-31 17:56:09
回答 1查看 1.6K关注 0票数 3

我们有Django Rest框架在工作,但是我是一个前端开发人员,决定为他的下一个开源项目做一点DRF。

我不希望复制粘贴太多代码,因为您可以看到我所有的序列化程序、模型等……on GitHub

我已经问过工作中的开发人员了。有人说我应该重写to_representation,这看起来不太对,因为我们是从头开始构建序列化模型。而另一位工作中的Django开发人员建议我研究一下custom relation fields

从本质上讲,给定以下序列化程序,我将如何在查询集中包含连接表中的"type“(命名不佳)列:

代码语言:javascript
运行
AI代码解释
复制
class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('id', 'username', 'countries')

在伪代码中,我寻找类似下面的内容,所以当你获得一个用户时,你也会得到相关的countries,它通过多对多关系工作得很好,以及来自连接表的“类型”:

代码语言:javascript
运行
AI代码解释
复制
class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('id', 'username', 'countries', 'pinned.type')

我希望得到如下JSON响应:

代码语言:javascript
运行
AI代码解释
复制
{
    "username": "wildhoney",
    "countries": [
        { "country_id": 4, "type": 1 },
        { "country_id": 5, "type": 2 },
        { "country_id": 6, "type": 3 }
    ]
}

目前,我只收到一个country_id列表。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-31 18:04:01

您将需要使用如下嵌套关系:

代码语言:javascript
运行
AI代码解释
复制
class TrackSerializer(serializers.ModelSerializer):
    class Meta:
        model = Track
        fields = ('order', 'title', 'duration')

class AlbumSerializer(serializers.ModelSerializer):
    tracks = TrackSerializer(many=True, read_only=True)

    class Meta:
        model = Album
        fields = ('album_name', 'artist', 'tracks')

来源:http://www.django-rest-framework.org/api-guide/relations/#nested-relationships

因此,对于您的情况,它将是:

代码语言:javascript
运行
AI代码解释
复制
class PinnedSerializer(ModelSerializer):
    class Meta:
        model = Pinned
        fields = ('type', 'country_id')

class UserSerializer(ModelSerializer):
    pins = PinnedSerializer(many=True, read_only=True)
    class Meta:
        model = User
        fields = ('id', 'username', 'countries', 'pins')

通过实际工程测试的最新版本:

代码语言:javascript
运行
AI代码解释
复制
class PinnedSerializer(serializers.ModelSerializer):
    country_id = serializers.ReadOnlyField(source='country.id')
    class Meta:
        model = Pinned
        fields = ('type', 'country_id')


class UserSerializer(serializers.ModelSerializer):
    pinned_set = PinnedSerializer(many=True, read_only=True)

    class Meta:
        model = User
        fields = ('id', 'username', 'pinned_set')

输出:

代码语言:javascript
运行
AI代码解释
复制
{
    "id": 3,
    "username": "bobdole",
    "pinned_set": [
        {
            "type": 1,
            "country_id": 250
        }
    ]
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45422379

复制
相关文章
Office 文档解析 文档格式和协议
本文讨论的 Office 文档指的是 Office 2007 及以后的 PPTX 和 xlsx 等格式的文件。在 Office 2007 之前使用的不公开标准的二进制格式定义。在 Office 2007 之后的文档格式使用 OOXML 国际标准定义,本文将告诉大家这个标准的协议和格式
林德熙
2020/07/28
3K0
Python 3 Office文档格式转换
上次讲到,要快速提取word与excel文件中的图片,有一个前提条件,那就是操作的目标文件扩展名必须是要为.docx\.xlsx才可以。这次我们用Python 3来实现.doc\.xls文件自动转换为.docx\.xlsx。
用户6184845
2019/09/26
1.3K0
如何使用CanaryTokenScanner识别Microsoft Office文档中的Canary令牌和可疑URL
CanaryTokenScanner是一款功能强大的Canary令牌和可疑URL检测工具,该工具基于纯Python开发,可以帮助广大研究人员快速检测Microsoft Office和Zip压缩文件中的Canary令牌和可疑URL。
FB客服
2024/02/26
1910
如何使用CanaryTokenScanner识别Microsoft Office文档中的Canary令牌和可疑URL
如何实现Office文档在线预览
5、支持跨域,支持所有设备以及浏览器。客户端使用任何浏览器(包括移动设备上的)、微信都可以预览。
usdoc
2022/04/14
5.5K0
Office文件的Open Xml 格式
此时可以对xml文件进行操作,要想再次把这已经解压后的文件还原为原office文件,必须要把已经解压后的文件添加成.zip文件再把后缀名改为.xlsx文件才能打开,否则添加为.rar文件后再改后缀名为.xlsx文件时会出现乱码的情况!
阿豪聊干货
2018/08/09
1.1K0
office2021:office2021下载 如何在Office文档页面上放置水印
Microsoft office是一款广泛使用的办公软件套装,它包含了多种不同的应用程序,如Word、Excel、PowerPoint、Outlook等。这些应用程序可以帮助用户进行各种任务,例如创建文档、制作表格、创建演示文稿、管理电子邮件等。
小昭在奔跑
2023/04/20
2.7K0
office2021:office2021下载 如何在Office文档页面上放置水印
如何用Doxgen制作chm格式文档
对程序员来说,在开发自己的接口时,制作一个easy-go的文档也是coding中必不可少的一步,而且是相当重要的一步,虽然国内很多程序员,现在都略过了这一步。 本文的前提是,大家已经在代码中写了符合生成注释文档的注释,关于注释的规则,可以参考百度文库里的一个文档 “使用Doxygen生成chm帮助文档使用详解”, 链接地址:http://wenku.baidu.com/view/110caf8002d276a200292e44.html 接下来,就开始我们的简单制作chm文档之旅吧,嘿嘿! 系统信息:win
_gongluck
2018/03/08
2.8K0
如何用Doxgen制作chm格式文档
揭秘如何使用跨平台的EvilClippy创建恶意MS Office文档
今天给大家介绍的是一款名叫EvilClippy的开源工具,EvilClippy是一款专用于创建恶意MS Office测试文档的跨平台安全工具,它可以隐藏VBA宏和VBA代码,并且可以对宏代码进行混淆处理以增加宏分析工具的分析难度。当前版本的EvilClippy支持在Linux、macOS和Windows平台上运行,实现了跨平台特性。
FB客服
2019/05/16
2.3K0
揭秘如何使用跨平台的EvilClippy创建恶意MS Office文档
干货 | Office文档钓鱼之如何快速进行宏免杀
Office 宏,译自英文单词 Macro。宏是 Office 自带的一种高级脚本特性,通过 VBA 代码, 可以在 Office 中去完成某项特定的任务,而不必再重复相同的动作,目的是让用户文档中 的一些任务自动化。而宏病毒是一种寄存在文档或模板的宏中的计算机病毒。一旦打开这样 的文档,其中的宏就会被执行,于是宏病毒就会被激活,转移到计算机上,并驻留在 Normal 模板上。
HACK学习
2021/12/08
2.7K0
干货 | Office文档钓鱼之如何快速进行宏免杀
dotnet OpenXML 修复 Office 文档里面包含格式不正确的 Uri 而无法解析
在使用 OpenXML 解析 Office 文档,无论是 PPT 还是 Word 还是 Excel 文档,都会使用标准方式解析。而此时的文档如果包含了错误的 Url 格式,例如不正确的邮件名的时候,将会在解析的时候出错。本文告诉大家如何修复这个问题
林德熙
2021/01/07
1.8K0
dotnet OpenXML 修复 Office 文档里面包含格式不正确的 Uri 而无法解析
php如何实现图片格式转换
开发过程中总会遇到一些需求需要对图片格式进行转换。比如 gif转png,jpg转png
超级小可爱
2023/02/20
8340
springboot实战之office文档在线预览
文档在线预览在企业级应用开发也算是比较常遇见的需求了,通常处理这方面的需求大致有如下的方案,
lyb-geek
2019/11/27
7.7K0
springboot实战之office文档在线预览
在线文档预览方案-office web apps
用户1168362
2018/01/05
7.4K0
在线文档预览方案-office web apps
MongoDB:如何将 BSON 文档转换为可读的格式
二进制 Javascript 对象表示法 (BSON) 是 JSON 文档的二进制编码序列化。JSON 更易于理解,因为它是人类可读的,但与 BSON 相比,它支持的数据类型更少。BSON 已扩展为添加一些可选的非 JSON 原生数据类型,例如日期和二进制数据。
用户4235284
2023/10/14
1.2K0
如何在chrome中直接打开、编辑、保存Word/Excel/PPT等Office文档?
在2015年的主流浏览器版本中,因为可以直接调用微软开源的 ActiveX控件,可以实现微软Office软件的在线编辑及审阅功能,但是从2015年开始,各大主流浏览器先后取消了对 NPAPI插件,导致在线编辑Office软件成为了一个难题。虽然后来有商业公司开发的相关控件,但是还是无法 克服ActiveX控件固有的缺陷,不仅限制了浏览器的版本,还需要用户单独设置浏览器安全设置,导致用户体验极差。
喵大侠
2021/08/13
4.7K0
如何在chrome中直接打开、编辑、保存Word/Excel/PPT等Office文档?
【Python】解析 Xml 格式的文档
注意:xml.etree.ElementTree模块在应对恶意结构数据时显得并不安全。
杨丝儿
2022/02/25
1.9K0
Apache POI 读取 Microsoft Office Excel 文档
Apache POI 项目的使命是创造和维护 Java API 操纵各种格式的文件,其中包括基于 Office Open XML 标准(OOXML)和微软的 OLE 2 Compound Document 格式(OLE2)。
HoneyMoose
2020/12/03
6600
Apache POI 读取 Microsoft Office Excel 文档
OFFICE 文档转换为html在线预览
网上一般介绍的都是使用JODConverter ,通过java来调用转换服务,其实还有一种替代方案,就是使用pyodconverter,python版本的转换脚本https://github.com/mirkonasato/pyodconverter/
JadePeng
2022/03/24
4.9K0
OFFICE 文档转换为html在线预览
dotnet Open XML 如何判断一份 Office 文档是否被加密
在拿到一份 PPTX 文档,或一份 Word 的 docx 文档,如何判断这份文档是被加密的
林德熙
2020/09/24
1.4K0
dotnet Open XML 如何判断一份 Office 文档是否被加密
Office文档嵌入对象点击执行的社工技巧
Microsoft Office相信大家都用过。Office在文档中嵌入对象极大的方便了我们的日常使用,但同时也为我们带来了众多安全问题。可以说,Office文档为攻击者提供了各种方法来诱骗受害者运行任意代码。当然,攻击者也可能会尝试利用Office漏洞,但更常见的情况是,攻击者会向受害者发送包含恶意宏或嵌入式(Packager)可执行文件的Office文档。
FB客服
2018/09/21
2.1K0
Office文档嵌入对象点击执行的社工技巧

相似问题

Google脚本函数将curl数据提取到Google Sheets

10

将PubMed数据导入Google Sheets

10

将Google Sheets数据放入Redshift

111

将gzipped数据导入Google Sheets

21

使用Java将数据写入Google Sheets

118
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档