问题是关于在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”? 谢谢
答案 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()
。