Django Rest Framework。 SerializerMethodField还是源码?

时间:2017-01-16 15:29:05

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

关于DRF序列化器的问题。特别是ModelSerializer。

外键有两个版本:

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

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

  3. 哪些更好/更快?

    UPD

    是的,我知道select / prefetch_related。 但更好的方法是从数据库中提取所需的字段并自动序列化或拉出一些“原始”字段并很好地将它们连接到序列化器中?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

它们之间没有区别。如果要提高速度,则应通过调用查询集的select_related方法在视图中执行此操作。

YourModel.objects.select_related('user')

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