DRF: ожидалось целое число, а получена строка (с использованием Axios)

Я получаю следующую ошибку, когда пытаюсь отправить массив идентификаторов в django rest framework:

Моя полезная нагрузка выглядит следующим образом:

назначенные_помещения: 1,2

Когда я использую тестовую страницу drf api, она работает, и полезная нагрузка выглядит следующим образом: assigned_facilities : [1, 2]

Так что я предполагаю, что мне не хватает скобок, и поэтому он не работает? Как мне это исправить?

    const cpBoard = useSelector((state) => state.cpBoard);
    const facilityIds = (cpBoard.cpBoardItems?.map(cpBoardItem => (cpBoardItem.id)));

    function submitFacilities() {

        const facilitydata = new FormData()
        facilitydata.append("assigned_facilities", facilityIds);

        axios.patch(API.leads.update(id), facilitydata, {
            headers: {
                "Authorization": `Bearer ${accessToken}`,
                'Content-Type' : 'application/x-www-form-urlencoded',
                'Accept' : 'application/json',
            },
            withCredentials: true,
        })
            .then(res => {
                setLead(res.data)
            })
            .finally(() => {
                setLoading(false)
            })
    }

views.py

class LeadUpdateView(UpdateAPIView):
    permission_classes = [IsAuthenticated, IsLeadOwner]
    serializer_class = LeadUpdateSerializer

    def get_queryset(self):
        return Lead.objects.all()

serializers.py

class LeadUpdateSerializer(serializers.ModelSerializer):
    is_owner = serializers.SerializerMethodField()
    class Meta:
        model = Lead
        fields = (
            "id",
            "first_name",
            "last_name",
            "PrimaryAddress",
            "assigned_facilities",

        )
        read_only_fields = ("id", "created_at", "agent", "is_owner")

    def get_is_owner(self, obj):
        user = self.context["request"].user
        return obj.agent == user

Можете ли вы поделиться функцией/видением в Django, которая обрабатывает этот запрос?

Мое предположение заключается в том, что вы отправляете форму, которая неправильно отформатирована. Вы отправляете строку идентификаторов "[1,2]", что, вероятно, не сработает. Можете ли вы попробовать отформатировать вашу форму следующим образом:

{ 
    ...
    "assigned_facilities": [{"id": 1}, {"id": 2}], 
    ...
}

Я догадался:

 axios.patch(API.leads.update(id), { "assigned_facilities": facilityIds}, {

            headers: {
                "Authorization": `Bearer ${accessToken}`,
                'Accept' : 'application/json',
            },
            withCredentials: true,
        })
            .then(res => {
                setLead(res.data)
            })
            .finally(() => {
                setSending(false)
            })
    }

Отправляя его вместо этого как FormData просто как объект с ключом assigned_facilities и значением facilityIds

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