关于 DRF 序列化程序的问题。尤其是模型序列化程序。
有两个带有外键的版本:
-
field = CharField(source='user.name')
-
field = SeriaizerMethodField() get_field(self, obj): return obj.user.name
什么会更好/更快?
UPD
是的,我知道选择/prefetch_related。但是,从数据库中提取必填字段并自动序列化它更好,还是拉取一些"原始"字段并将它们很好地连接到序列化程序中更好?
它们之间没有区别。如果要提高速度,则应通过调用查询集的方法在视图中执行此操作select_related
。
YourModel.objects.select_related('user')
它将加入user
表,下次调用user.name
致敬不会进入数据库
第一个从框中提供不同的验证选项。虽然第二个是非常可定制的,并且本身不提供任何验证。