2013-11-24 84 views
2

我有兩個相關的模型和序列化程序。當我序列化這些模型中的一個(序列化器的深度爲1)時,結果將包含來自相關對象的一些不應該可見的字段。我如何指定哪個序列化器用於關係?或者無論如何要告訴Rest Framework從相關對象中排除一些字段?Django Rest Framework - 從相關對象中排除字段

謝謝

回答

1

我想一個辦法是爲要返回只有有限的字段數,然後在其他模型的串行使用串行模式創建一個額外的串行器。事情是這樣的:

class MyModelSerializerLimited(serializers.ModelSerializer): 

    class Meta: 
     model = MyModel 
     fields = ('field1', 'field2') #fields that you want to display 

然後在其他串行使用MyModelSerializerLimited:上串行

class OtherModelSerializer(serializers.ModelSerializer): 

    myfield = MyModelSerializerLimited() 

    class Meta: 
     model = OtherModel 
     fields = ('myfield', ...) 
     depth = 1 
0

您可以覆蓋restore_fields方法。在restore_fields方法中,您可以修改字段列表 - serializer.fields - 彈出,推送或修改任何字段。

例如:字段工作區是READ_ONLY時動作不是 '創建'

class MyPostSerializer(ModelSerializer): 

def restore_fields(self, data, files): 
    if (self.context.get('view').action != 'create'): 
     self.fields.get('workspace').read_only=True 
    return super(MyPostSerializer, self).restore_fields(data, files) 

class Meta: 
    model = MyPost 
    fields = ('id', 'name', 'workspace') 
相關問題