Как опубликовать поле manytomany по значению, а не по id в django rest framework

у меня есть классы буксировки, отношения между ними многие ко многим полям, я не хочу размещать данные таким образом {"first_name":"mohammad", "last_name":"alqudah", "motivate":[ "Stay Fit","Look Younger" ] } вместо этого способа {"first_name":"mohammad", "last_name":"alqudah", "motivate":[ 1,2 ] }

мои сериализаторы

    class MotivateSerializers(serializers.ModelSerializer):
    class Meta:
        model = Motivate
        fields = ['name']

class UserSerializers(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ['lat','long','first_name','last_name','mobile_number','email','date_of_birth',
        'gender','height','weight','relationship','number_of_household','number_of_pets','kind_of_pets','motivate']

my views.py


@api_view(['POST', ])
@permission_classes([IsAuthenticated])
def userdata(request):
    user = request.user
    serializer = UserSerializers(instance=user, data=request.data,many=False)
    if serializer.is_valid():
        serializer.save()
        return Response("Data has been updated successfully")
    else:
        # print (serializer.errors)
        return Response(serializer.errors)




Вы можете использовать SlugRelatedField. Пример:

class UserSerializers(serializers.ModelSerializer):
    # New
    motivate = serializers.SlugRelatedField(
        slug_field="name",
        queryset=Motivate.objects.all()
        many=True
    )

    class Meta:
        model = User
        fields = [
            "first_name", "last_name",
            ...
            "motivate"
        ]
Вернуться на верх