【问题标题】:Django Rest Framework. SerializerMethodField or source? [closed]Django 休息框架。 SerializerMethodField 还是源? [关闭]
【发布时间】:2017-05-31 11:43:05
【问题描述】:

关于 DRF 序列化程序的问题。尤其是 ModelSerializer。

外键有两个版本:

  1. field = CharField(source='user.name')

  2. field = SeriaizerMethodField() get_field(self, obj): return obj.user.name

什么会更好/更快?

UPD

是的,我知道 select/prefetch_related。 但是最好只是从数据库中提取所需字段并自动序列化它,还是提取一些“原始”字段并将它们很好地加入序列化程序?

【问题讨论】:

标签: django rest optimization serialization django-rest-framework


【解决方案1】:

它们之间没有区别。如果你想提高速度,你应该通过调用查询集的select_related 方法在视图中完成。

YourModel.objects.select_related('user')

它将加入user 表并调用user.name 属性下次不会命中数据库

【讨论】:

    【解决方案2】:

    First one 提供了不同的验证选项。而第二个是非常可定制的,本身不提供任何验证。

    【讨论】:

      猜你喜欢
      • 2013-04-08
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      • 2015-02-25
      • 2016-04-25
      • 2016-03-23
      相关资源
      最近更新 更多