Django Rest Framework - 如何使用id保存并检索其他列?

时间:2018-05-31 14:41:59

标签: python django django-models django-rest-framework

此问题是此链接中的其他问题的延续(Django Rest Framework how to save a model with Related Field based on ID

当我使用PrimaryKeyRelatedField()在POST请求中使用id存储数据时,我的情况得到了解决。这反过来又造成了另一个问题。我使用相同的API的GET选项列出相关(外键引用)模型中的所有列,在使用PrimaryKeyRelatedField()后,其他列消失,ID仅显示。需要帮助。

更明确的是在POST调用期间需要引用表的ID列,并且在GET调用期间需要模型/表的其他列。

PS:我使用过serializers.ModelSerializer方法

1 个答案:

答案 0 :(得分:2)

您可以使用序列化程序的to_representation方法仅覆盖输出数据的相关对象字段。例如,您可以使用sested serializer显示相关的对象详细信息,如下所示:

class RelatedSerializer(serializers.ModelSerializer):
    class Meta:
        Model = RelatedModel
        fields = ('id', 'field1', 'field2')

class YourSerializer(serializers.ModelSerializer):
    related_field = serializer.PrimaryKeyRelatedField(queryset=RelatedModel.objects.all())
    class Meta:
        Model = SomeModel 
        fields = ('id', 'related_field')

    def to_representation(self, instance):
        self.fields['related_field'] = RelatedSerializer()
        return super(YourSerializer, self).to_representation(instance)