如何在 DRF 中序列化通用外键

2024-02-15

我有带有通用外键的模型,我想序列化该模型。

model.py:

class AddressType(models.Model):
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type','object_id')

    def __unicode__(self):
        return u'%s' % str(self.content_type)

class AddressBook(TimeStampedModel):
    class Meta:
        db_table = 'address_book'

    uuid = UUIDField(auto=True)
    address_tag = models.CharField(null=True, blank=True, max_length=20)

    # should be a generic foreign key
    address_object_type = GenericRelation(AddressType)
    address1 = models.CharField(
        verbose_name='Address1',
        max_length=200,
    )
    address2 = models.CharField(
        verbose_name='Address2',
        max_length=200,
    )

serializer.py:

class AddressBookSerializer(serializers.ModelSerializer):
    class Meta:
        model = AddressBook
        fields = ('id','uuid','address_tag','address_object_type','address1','address2')

如何在上述模型上序列化 JSON?


这个案例在这篇文章中得到了完美的描述文档 http://www.django-rest-framework.org/api-guide/relations/#generic-relationships.

所以如果你想序列化AddressType你需要实现这样的事情:

class ContentObjectRelatedField(serializers.RelatedField):
    """
    A custom field to use for the `content_object` generic relationship.
    """

    def to_representation(self, value):
        """
        Serialize tagged objects to a simple textual representation.
        """
        if isinstance(value, Bookmark):
            return 'Bookmark: ' + value.url
        elif isinstance(value, Note):
            return 'Note: ' + value.text
        raise Exception('Unexpected type of tagged object')

Where Bookmark and Note是可能具有关联内容的对象。

如果你想序列化AddressBook你可以尝试做这样的事情:

class AddressBookSerializer(serializers.ModelSerializer):
    address_object_type = ContentObjectRelatedField()
    class Meta:
        model = AddressBook
        fields = ('id','uuid','address_tag','address_object_type','address1','address2')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 DRF 中序列化通用外键 的相关文章

  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • Flask 和 uWSGI - 无法加载应用程序 0 (mountpoint='')(找不到可调用或导入错误)

    当我尝试使用 uWSGI 启动 Flask 时 出现以下错误 我是这样开始的 gt cd gt root localhost uwsgi socket 127 0 0 1 6000 file path to folder run py ca
  • 如何在 success_url 中传递上下文数据?

    我制作了一个表单 我希望再次返回相同的表单 这次使用可在我的模板中使用的上下文数据来显示表单已成功发送 我怎样才能做到这一点 class ContactUsView FormView form class ContactUsForm tem
  • Python 多处理示例不起作用

    我正在尝试学习如何使用multiprocessing但我无法让它发挥作用 这是代码文档 http docs python org 2 library multiprocessing html from multiprocessing imp
  • pandas 替换多个值

    以下是示例数据框 gt gt gt df pd DataFrame a 1 1 1 2 2 b 11 22 33 44 55 gt gt gt df a b 0 1 11 1 1 22 2 1 33 3 2 44 4 3 55 现在我想根据
  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • 如何使用 Scrapy 从网站获取所有纯文本?

    我希望在 HTML 呈现后 可以从网站上看到所有文本 我正在使用 Scrapy 框架使用 Python 工作 和xpath body text 我能够获取它 但是带有 HTML 标签 而且我只想要文本 有什么解决办法吗 最简单的选择是ext
  • Python tcl 未正确安装

    我刚刚为 python 安装了graphics py 但是当我尝试运行以下代码时 from graphics import def main win GraphWin My Circle 100 100 c Circle Point 50
  • __del__ 真的是析构函数吗?

    我主要用 C 做事情 其中 析构函数方法实际上是为了销毁所获取的资源 最近我开始使用python 这真的很有趣而且很棒 我开始了解到它有像java一样的GC 因此 没有过分强调对象所有权 构造和销毁 据我所知 init 方法对我来说在 py
  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • 如何使用装饰器禁用某些功能的中间件?

    我想模仿的行为csrf exempt see here https docs djangoproject com en 1 11 ref csrf django views decorators csrf csrf exempt and h
  • feedparser 在脚本运行期间失败,但无法在交互式 python 控制台中重现

    当我运行 eclipse 或在 iPython 中运行脚本时 它失败了 ascii codec can t decode byte 0xe2 in position 32 ordinal not in range 128 我不知道为什么 但
  • 当玩家触摸屏幕一侧时,如何让 pygame 发出警告?

    我使用 pygame 创建了一个游戏 当玩家触摸屏幕一侧时 我想让 pygame 给出类似 你不能触摸屏幕两侧 的错误 我尝试在互联网上搜索 但没有找到任何好的结果 我想过在屏幕外添加一个方块 当玩家触摸该方块时 它会发出警告 但这花了很长
  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望
  • 循环标记时出现“ValueError:无法识别的标记样式 -d”

    我正在尝试编码pyplot允许不同标记样式的绘图 这些图是循环生成的 标记是从列表中选取的 为了演示目的 我还提供了一个颜色列表 版本是Python 2 7 9 IPython 3 0 0 matplotlib 1 4 3 这是一个简单的代

随机推荐

  • php-excel-reader 是否支持 xlsx

    我在用php excel reader 但读取时出错 xlsx文件 那么这个支持xlsx格式吗 或者还有什么其他可用的解决方案 我的要求只是读取文件 xls xlsx and ods 并在html页面上渲染 PHPExcel似乎太多了 因为
  • Java 中的“new”有什么作用?类加载器?

    我无法在 JLS JVMSpec 或 SO 中轻松找到它 我确信肯定有人问过 那么 新 到底有什么作用呢 假设我们在A中实例化一个类B class A new B 这相当于 class A A class getClassLoader lo
  • 当不在除 P、DIV、SPAN、TD 之外的 html 标签内时,jQuery 查找/替换 html 文本

    我有一个 html 文本片段 它是页面 DOM 的一部分 我需要在其上运行查找 替换 并且我需要一些帮助来找出创建查找 替换函数的最佳方法 例如 我想获取 id content 的 dom 对象的内容 并使用目标搜索短语运行查找替换 我需要
  • python 中使用 unicode 数据的 string.translate()

    我有 3 个 API 它们将 json 数据返回到 3 个字典变量 我正在从字典中取出一些值来处理它们 我在列表中读取了我想要的具体值valuelist 步骤之一是删除其中的标点符号 我通常使用string translate None s
  • 为什么斐波那契数在计算机科学中很重要?

    斐波那契数列 http en wikipedia org wiki Fibonacci number已经成为计算机科学专业学生对递归的流行介绍 并且有一个强有力的论据表明它们在自然界中持续存在 由于这些原因 我们许多人都熟悉它们 它们也存在
  • SVG 图像标签不起作用

    我正在研究 SVG 教程here https developer mozilla org en SVG Tutorial SVG Image Tag 并且无法加载图像 XAMPP 给我一个错误 说 该 XML 文件似乎没有任何与之关联的样式
  • 从 Google 脚本将数据插入 BigQuery:遇到“”

    我正在尝试通过 Google App 脚本将数据从 Google 电子表格导入到 BigQuery 我可以下载数据 但是当我尝试执行 INSERT INTO 时出现错误 错误信息是 在第 1 行第 31 列遇到 尝试使用标准 SQL htt
  • 日语 Unicode 字体

    我正在创建一个游戏 我有一些带有文本的用户界面 最近我们想添加日语版本 但我遇到字体问题 我使用 stb freetype 来光栅化字体 并且我支持 Unicode 所以这应该不是问题 但大多数字体似乎不包含日语字符 在 Windows 上
  • 将 boost::shared_lock 升级为独占锁

    有人可以解释一下 boost upgrade lock 的正确用法吗 下面的代码会导致死锁 Global typedef boost shared mutex Mutex typedef boost shared lock
  • 在Python中从其他文件调用变量

    我正在尝试导入文件 情况如下 file1 py 包含 from file2 import username steven action file2 py 包含 def action print username 但我无法打印用户名 因为变量
  • 如何:响应式可用 Wcf 双工通信

    我正在开发一个使用 WCF 在服务器和客户端之间进行通信的应用程序 服务器具有不断变化的服务数量 以及一项主服务 客户端可以查询有关其他服务的信息 然后使用主服务中的信息订阅他们想要的服务 当子服务发生更改 添加 删除等 时 主服务向订阅客
  • 当当前输入有值时如何前进到下一个表单输入?

    我有一个包含很多条目的表格 在当前文本框中输入值后 我想将焦点更改为下一个文本框 并希望继续此过程直到最后一个字段 我的问题是 一旦我在文本框中输入值 是否可以通过 JavaScript 编码模拟按 Tab 键时发生的情况 在不按键盘上的
  • [innerHTML] 内的 Angular routerLink

    我一直在寻找一种方法 使标准 a href 链接在动态加载到 innerHTML 中时能够像 routerLinks 一样工作 它似乎不是标准的东西 我找不到任何可以满足我需要的东西 我有一个可行的解决方案 但想知道是否有人知道更好的方法来
  • 定义 XML 架构 (XSD) 时“选择”“组”元素是否有效

    定义 XML 架构 XSD 时 选择 组 元素是否有效 即以下有效
  • Google Hangouts API:我可以发起“直播”环聊吗?

    有没有办法通过 API 发起 直播 环聊 我已经创建了我的应用程序并且运行良好 但是我需要为我的客户提供环聊的嵌入代码 我似乎找不到任何有关如何通过环聊按钮启动此类环聊的文档 https developers google com hang
  • 如何快速获取本周星期一的日期

    我正在尝试获取本周星期一的日期 在我的表格视图中 这被视为一周的第一天 我还需要获取本周的星期日 在我的表视图中 这被视为一周的最后一天 目前的尝试 let date NSDate let calendar NSCalendar curre
  • 当找到预期结果时是否可以从 lambda 中中断

    我是Python新手 刚刚对Lambda表达式非常感兴趣 我遇到的问题是使用 lambda 过滤器从元素列表中找到一个且仅有一个目标元素 理论上 当找到目标元素时 就没有再继续下去的意义了 With for loop这很简单break循环
  • jQuery Jcrop setSelect 直观显示,但是点击移动时会跳转

    我正在使用 jQuery 插件 Jcrop 我对名为 setSelect 的初始设置之一有疑问 该属性接受一个包含两组 x 和 y 坐标 左上角和右下角 的数组 img src blah
  • 如何让输出显示在 Visual Studio 2005 错误列表的“消息”窗格中?

    我有一个像这样的头文件 ifndef GEN NOTE MARKERS TO DEVELOPERS HPP define GEN NOTE MARKERS TO DEVELOPERS HPP ifdef DEBUG macros for t
  • 如何在 DRF 中序列化通用外键

    我有带有通用外键的模型 我想序列化该模型 model py class AddressType models Model content type models ForeignKey ContentType object id models