我想序列模型,而是要包括需要在模型實例做一些數據庫查找附加字段被序列化:Django的REST框架:增加額外的外地ModelSerializer
class FooSerializer(serializers.ModelSerializer):
my_field = ... # result of some database queries on the input Foo object
class Meta:
model = Foo
fields = ('id', 'name', 'myfield')
什麼正確的方式來做到這一點?我在序列化程序中看到you can pass in extra "context",是傳遞上下文字典中其他字段的正確答案?通過這種方法,獲取我所需的字段的邏輯將不會與序列化程序定義保持一致,這是理想的,因爲每個序列化的實例都需要my_field
。在DRF序列器文檔中的其他地方,says「額外字段可以對應於任何屬性或在模型上可調用」。額外的領域我在說什麼?我應該在Foo
的模型定義中定義一個返回my_field
值的函數,並且在序列化程序中,我將my_field連接到可調用的?這是什麼樣子?
在此先感謝,如有必要,請高興地澄清問題。
+1,這對於CustomSerializer是否也適用? –
是否可以向這些字段添加驗證?我的問題是:如何接受可以在post_save()處理程序中驗證和處理的自定義POST值? – Alp
請注意,SerializerMethodField是隻讀的,因此這對傳入的POST/PUT/PATCH不起作用。 –