DRF默认情况下使用PrimaryKeyRelatedField
渲染外键,并以单个pk
表示。
class Foo(models.Model):
bar = models.ForeignKey('Bar')
def FooSerializer(serializers.ModelSerializer):
class Meta:
model = Foo
fields = [
'id',
'bar'
]
FooSerializer(foo_instance).data
看起来像
{
'id': 3,
'bar': 5,
}
我希望它成为
{
'id': 3,
'bar': {
'id': 5
},
}
不仅针对Foo / Bar,而且针对整个项目
答案 0 :(得分:0)
可能您可以这样:
首先,改写PrimaryKeyRelatedField
:
class DictPrimaryKeyRelatedField(PrimaryKeyRelatedField):
def to_representation(self, value):
pk = super(DictPrimaryKeyRelatedField, self).to_representation(value)
return dict(id=pk)
然后创建一个ModelSerializer
,并覆盖serializer_related_field
:
class CustomModelSerializer(serializers.ModelSerializer):
serializer_related_field = DictPrimaryKeyRelatedField
然后在所有序列化程序中使用CustomModelSerializer
而不是ModelSerializer
。