关于DRF序列化器的问题。特别是ModelSerializer。
外键有两个版本:
field = CharField(source='user.name')
field = SeriaizerMethodField()
get_field(self, obj):
return obj.user.name
哪些更好/更快?
UPD
是的,我知道select / prefetch_related。 但更好的方法是从数据库中提取所需的字段并自动序列化或拉出一些“原始”字段并很好地将它们连接到序列化器中?
答案 0 :(得分:0)
First one提供了不同的验证选项。虽然第二个是非常可定制的,并且本身不提供任何验证。
答案 1 :(得分:0)
它们之间没有区别。如果要提高速度,则应通过调用查询集的select_related
方法在视图中执行此操作。
YourModel.objects.select_related('user')
它将加入user
表并且下次调用user.name
属性不会访问数据库