-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從框中提供了不同的驗證選項。而第二個是非常可定製的東西,並不提供任何驗證。