标准向后关系管理器在Serilizer中的使用

时间:2019-07-11 17:40:03

标签: django serialization django-rest-framework

问题是关于在DRF中使用标准Django向后相关的经理名称。

我有以下序列化器


class ExtraUserSerializer(serializers.ModelSerializer):
    boatmodel_set = serializers.PrimaryKeyRelatedField(many=True,
                                            queryset=BoatModel.objects.all())

    class Meta:
        model = get_user_model()
        fields = ("id", "username", 'boatmodel_set', )

此序列化器表示主要模型ExtraUser,而boat_model set表示与次要模型BoatModel的向后关系。选择相关名称“ boatmodel_set”的原因很简单,因为主要的Django核心站点使用此标准“ secondarymodel_set”常规的向后相关管理器名称,因此在DRF部分中,我也必须使用related_name =“ boatmodel_set”,以便不更改主要部分中的代码。

问题是-是否可以保留related_name =“ boatmodel_set”,但在呈现的json中将其表示为,例如“ boats”? 谢谢

1 个答案:

答案 0 :(得分:1)

,您只需指定source= parameter [drf-doc],然后以不同的方式命名字段,例如:

class ExtraUserSerializer(serializers.ModelSerializer):
    boats = serializers.PrimaryKeyRelatedField(
        many=True,
        queryset=BoatModel.objects.all(),
        source='boatmodel_set'
    )

    class Meta:
        model = get_user_model()
        fields = ('id', 'username', 'boats')

此处JSON端将包含"boats": ...,而模型端仍将使用myuser.boatmodel_set.all()