-1

关于DRF序列化器的问题。特别是ModelSerializer。Django Rest框架。 SerializerMethodField或来源?

有两个版本与外键:

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

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

什么工作更好/快?

UPD

是的,我知道选择/ prefetch_related。 但是,更好的办法是从数据库中提取所需的字段,并自动将其序列化或拉出一些“原始”字段,并很好地将它们加入到序列化程序中?

+0

[参赛马匹(https://ericlippert.com/2012/12/17/performance-rant /) – Sayse

回答

0

它们之间没有区别。如果你想提高速度,你应该通过调用查询集的select_related方法来实现。

YourModel.objects.select_related('user') 

它会加入user表,并呼吁user.name属性附加伤害下次不会触及数据库

0

First one从框中提供了不同的验证选项。而第二个是非常可定制的东西,并不提供任何验证。