использование стандартного менеджера обратных связей в сериализаторах - PullRequest
1 голос
/ 11 июля 2019

Вопрос об использовании стандартного Django обратного связанного имени менеджера в DRF.

У меня есть следующий сериализатор


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 представляет обратную связь со вторичной моделью BoatModel. Связанное имя «boatmodel_set» выбрано просто потому, что основное ядро ​​сайта Django использует это стандартное «вторичное имя_модели», обычное имя обратного связанного менеджера, так что в части DRF мне также пришлось использовать related_name = «boatmodel_set», чтобы не изменять код в основной части.

Вопрос в том, можно ли сохранить related_name = «boatmodel_set», но представить его в визуализированном json как, например, «boats» ?? Спасибо

1 Ответ

1 голос
/ 11 июля 2019

Да , вы можете просто указать параметр source= [drf-doc] и назвать поле по-другому, например:

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

    class Meta:
        model = get_user_model()
        fields = ('id', 'username', <b>'boats'</b>)

Здесь сторона JSON будет содержать "boats": ..., тогда как сторона модели будет по-прежнему использовать myuser.boatmodel_set.all().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...