首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DRF:定制PrimaryRelatedField

DRF:定制PrimaryRelatedField
EN

Stack Overflow用户
提问于 2019-07-15 03:34:16
回答 1查看 95关注 0票数 0

默认情况下,DRF使用PrimaryKeyRelatedField呈现外键,并且它表示为单个pk

代码语言:javascript
复制
class Foo(models.Model):
   bar = models.ForeignKey('Bar')

def FooSerializer(serializers.ModelSerializer):

  class Meta:
    model = Foo
    fields = [
      'id',
      'bar'
    ]

FooSerializer(foo_instance).data看起来就像

代码语言:javascript
复制
{ 
  'id': 3,
  'bar': 5,
}

我希望它成为

代码语言:javascript
复制
{ 
  'id': 3,
  'bar': {
    'id': 5
  },
}

不仅仅是为Foo/Bar,而是为了整个项目

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-15 04:20:57

也许你可以这样做:

首先,覆盖PrimaryKeyRelatedField

代码语言:javascript
复制
class DictPrimaryKeyRelatedField(PrimaryKeyRelatedField):

    def to_representation(self, value):
        pk = super(DictPrimaryKeyRelatedField, self).to_representation(value)
        return dict(id=pk)

然后创建一个ModelSerializer,并覆盖serializer_related_field

代码语言:javascript
复制
class CustomModelSerializer(serializers.ModelSerializer):
    serializer_related_field = DictPrimaryKeyRelatedField

然后在所有序列化器中使用CustomModelSerializer而不是ModelSerializer

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57032965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档