我有兩個相關的模型和序列化程序。當我序列化這些模型中的一個(序列化器的深度爲1)時,結果將包含來自相關對象的一些不應該可見的字段。我如何指定哪個序列化器用於關係?或者無論如何要告訴Rest Framework從相關對象中排除一些字段?Django Rest Framework - 從相關對象中排除字段
謝謝
我有兩個相關的模型和序列化程序。當我序列化這些模型中的一個(序列化器的深度爲1)時,結果將包含來自相關對象的一些不應該可見的字段。我如何指定哪個序列化器用於關係?或者無論如何要告訴Rest Framework從相關對象中排除一些字段?Django Rest Framework - 從相關對象中排除字段
謝謝
我想一個辦法是爲要返回只有有限的字段數,然後在其他模型的串行使用串行模式創建一個額外的串行器。事情是這樣的:
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
您可以覆蓋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')