Django Rest Framework 中的 to_representation() 可以访问普通字段

2024-01-09

有关使用的文档to_representation有点短。该方法用于Django Rest Framework 3.0+更改数据在 API 中的表示形式。

这是文档链接:

http://www.django-rest-framework.org/api-guide/serializers/#overriding-serialization-and-deserialization-behavior http://www.django-rest-framework.org/api-guide/serializers/#overriding-serialization-and-deserialization-behavior

这是我当前的代码:

from django.forms.models import model_to_dict

class PersonListSerializer(serializers.ModelSerializer):

    class Meta:
        model = Person
        fields = ('foo', 'bar',)

    def to_representation(self, instance):
        return model_to_dict(instance)

当我执行此代码时,它返回模型中的所有字段,而不是我在上面指定的字段class Meta: fields.

是否可以参考一下class Meta: fieldsto_representation method?


DRF's ModelSerializer已经有了处理这个问题的所有逻辑。在你的情况下,你甚至不需要定制to_representation。如果您需要自定义它,我建议首先调用 super,然后自定义输出:

class PersonListSerializer(serializers.ModelSerializer):
    class Meta:
        model = Person
        fields = ('foo', 'bar',)

    def to_representation(self, instance):
        data = super(PersonListSerializer, self).to_representation(instance)
        data.update(...)
        return data

附:如果你有兴趣知道它是如何工作的,那么魔法实际上并不会发生在ModelSerializer.to_representation。事实上,它甚至没有实现该方法。其定期实施Serializer https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/serializers.py#L438-L458。 Django 模型的所有魔力实际上都发生在get_fields https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/serializers.py#L867哪个调用get_field_names https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/serializers.py#L936然后考虑Meta.fields参数...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django Rest Framework 中的 to_representation() 可以访问普通字段 的相关文章

随机推荐

  • 将 15 分钟数据重新采样为 1 分钟而不进行聚合

    我附上了基于季度的数据框的示例 我希望将其重新采样为每分钟而不进行任何聚合 输入数据框 Date CET Price 2020 01 01 11 00 50 2020 01 01 11 15 60 2020 01 01 11 15 100
  • ggplot:手动添加未映射的美观图例

    我想生成一个覆盖有点的条形图 其中两者都有单独的图例 另外 我想使用外部参数选择条形的颜色和点的大小aes 由于两者均未映射 因此不会生成图例 1 如何手动添加填充和尺寸图例 library ggplot2 d lt data frame
  • 以编程方式显示工具提示

    我开发了一个 WPF 示例项目 这是主窗口的 XAML 标记
  • 使用数据驱动测试使用 Mstest 名称代替数据行

    我使用 MsTests 和数据驱动方法进行测试 Excel是测试数据存储 测试结果不提供有关测试数据的任何信息 例如 结果如下 测试名称 数据行 5 我不清楚 如何自定义输出测试结果 例如 testname 测试数据 单词 数字或行命名 我
  • macOS Sierra Spotlight 扩展

    不幸的是 我无法在网上找到有关此主题的任何最新信息 类似于这里提出的问题 OS X Yosemite Spotlight 扩展 https stackoverflow com q 25130549 4295410 是否可以by now to
  • 在 CSS 标签后使用 HTML 来实现悬停状态

    我目前正在尝试将一些 html 传递到 css 中的 after 伪类中 以在链接悬停后添加一个箭头 我很久以前就在默认安装的 WordPress 主题中看到过这种做法 我觉得我必须错过一些简单的东西 a hover after conte
  • jQuery - 检测“x”分钟内没有任何操作并针对该事件运行函数(X 分钟内没有事件)

    如何检测用户在 X 分钟内没有执行任何操作并在此事件上运行函数 E G if no action from user for X minutes do stuff 任何建议都非常感激 现场演示 http jsfiddle net lokta
  • H2 数据库中的当前时刻

    如何获取H2数据库中实际的当前时钟时间 当前时刻 The CURRENT TIMESTAMP http h2database com html functions html current timestamp函数给出当前数据库事务开始的时刻
  • 在 odoo 8 服务器“--auto-reload”工作时

    实际上是在启动odoo 8服务器的命令中 它将提供 auto reload 选项 但实际上我不知道它是如何工作的以及何时工作 请给我一些指导 通常 如果更改 python 代码 则需要重新启动服务器才能应用新的更改 auto reload
  • 在wpf数据网格中调整列大小

    我目前正在开发一个WPF软件 我正在使用 WPF 并尝试允许列自动调整大小以适应数据网格 我使用了columnwidth 只要窗口未包含在滚动视图中 它就可以正常工作 如果它处于滚动视图中 则列的大小调整得非常大 这会导致数据网格的大小调整
  • OpenMP 中归约运算的执行顺序

    有没有办法知道 OpenMP 中归约运算符的执行顺序 换句话说 我想知道线程如何执行归约操作 是从左到右吗 当存在不是 2 的幂的数字时会发生什么 我想你会发现 OpenMP 只会减少关联操作 例如 and 如果您愿意 也可以是加法和乘法
  • 执行“pip install pycrypto”后,如何解决“没有名为‘Crypto’的模块”错误?

    基本上 我想带来Chemobot https chemistry stackexchange com users 28223 chemobot进入我自己的聊天室之一 它的创建者建议我应该运行 py我自己的机器上的脚本 我刚刚开始用 pyth
  • 我如何告诉 UserManager.FindByIdAsync(userid);包括关系?

    我使用 ASP NET Identity 和 Code First 向数据库添加了一个新属性及其相应的表 如下所示 public class ApplicationUser IdentityUser public virtual IColl
  • Java客户端-服务器:实时流式传输音频文件

    我正在制作一个基于客户端 服务器的音乐应用程序 例如spotify 以下是发送一个mp3 audio file给我的客户 我想要的是向我的客户端实时播放这个 mp3 音频文件为了实现这个目标需要改变什么 编辑 我在 stackoverflo
  • 如何为apache和django设置mod_wsgi?

    我知道关于这个主题的信息已经很多了 但是它们都相当笨拙 不是那么简单和富有表现力 谁能解释一下如何使用django与mod wsgi and apache mod wsgi 并不是特别适合运行 Python WSGI 应用程序 或者 如果您
  • 为什么 jquery 事件委托不起作用?

    我有以下 html ul li class active one li li class two li ul 以及以下 jquery contain contain going to use a lot contain on click l
  • 如何在 R 中的图表上构建趋势线

    我到处都检查过 人们引用了我无法理解的例子 是的 我有点慢 谁能解释一下如何在 R 中构建对数趋势线 这是工作示例 myds lt c 23 0415 13 1965 10 4110 12 2560 9 5910 10 7160 9 966
  • 在裸存储库上执行 git 命令

    在我的服务器上 我托管了一些我正在处理的裸 git 存储库 我想在我的网站上显示有关每个存储库的一些基本统计信息 现在 假设我想做一些简单的事情 例如列出存储库中的所有文件 在非裸 git 存储库上 这可以通过以下方式完成 git ls f
  • Trace Bug 仅在 CI 中偶尔发生

    我在 python 代码中有一个奇怪的错误 这种错误只在 CI 中有时发生 我们无法重现它 测试代码在哪里 response self admin client post url post self assertEqual 200 resp
  • Django Rest Framework 中的 to_representation() 可以访问普通字段

    有关使用的文档to representation有点短 该方法用于Django Rest Framework 3 0 更改数据在 API 中的表示形式 这是文档链接 http www django rest framework org ap