Сериализаторы HyperlinkModelSerializers не отрисовывают вложенные модели

У меня есть модель пользователей и групп, которая по умолчанию поставляется с Django. Я пытаюсь показать группу, вложенную в пользователей. Когда я использую serializers.ModelSerializer , все работает нормально, но чтобы добавить URL, я обновил его до serializers.HyperlinkedModelSerializer, и тогда он выдает следующую ошибку:

`HyperlinkedIdentityField` requires the request in the serializer context. Add `context={'request': request}` when instantiating the serializer.

Код модели

class GroupSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Group
        fields = ('id', 'name', 'url')


class UserSerializer(serializers.HyperlinkedModelSerializer):
    groups = serializers.PrimaryKeyRelatedField(many=True, queryset=Group.objects.all())

    class Meta:
        model = get_user_model()
        fields = ('id', 'email', 'password', 'name', 'is_active', 'is_verified', 'groups', 'url')

    def create(self, validated_data):
        groups_data = validated_data.pop('groups')
        user = get_user_model().objects.create(**validated_data)
        for group_data in groups_data:
            user.groups.add(group_data)
        return user

    def to_representation(self, instance):
        rep = super(UserSerializer, self).to_representation(instance)
        rep.update({
            'groups': GroupSerializer(many=True).to_representation(instance.groups)
        })
        return rep

С помощью serializers.ModelSerializer я получаю результат ниже, но как я могу добавить URL с пользователем и группой?

    {
        "id": 4,
        "email": "admin3@admin.com",
        "password": "12345678",
        "name": "admin3",
        "is_active": false,
        "is_verified": false,
        "groups": [
            {
                "id": 1,
                "name": "test"
            }
        ]
    },

Как объясняет ошибка, HyperlinkedModelSerializer требует request добавления контекста при инстанцировании.

Больше информации в документации: https://www.django-rest-framework.org/api-guide/serializers/#hyperlinkedmodelserializer

Вернуться на верх