将嵌套对象序列化为当前父对象的平面属性

时间:2019-06-23 00:05:28

标签: django django-rest-framework

我有模型A和模型B,模型B是模型A的子代。

我已经为模型A对象实现了ModelSerializer,我需要将相关模型B的所有属性表示为模型A的属性(属性)。

如何使用Django Rest Framework做到这一点?

谢谢

1 个答案:

答案 0 :(得分:0)

如果是孩子,那么:

class ModelB(ModelA):

您只需要在序列化程序中显式指定字段名称。

class ModelBSerializer(serializers.ModelSerializer):
    class Meta:
        model = ModelB
        fields = ('fieldFromB', 'fieldFromA', ....
        read_only_fields = ('fieldFromA', ...

如果是m2m或FK关系,请为模型A创建序列化器

class ModelBSerializer(serializers.ModelSerializer):
    SModelA= ModelASerializer(many=True, read_only=True)
    class Meta:
        model = ModelB
        fields = ('fieldFromB', 'SModelA', ....
        read_only_fields = ('SModelA', ...

如果它是与模型A的FK关系,并且您只需要ModelA的PK。只需将modelA添加到字段和只读字段中