Поле 'id' ожидало число, но получило <SimpleLazyObject: <User: username>>.

Я застрял на этой ошибке в течение некоторого времени и не могу понять, в чем проблема или что она вообще означает.

Я нашел несколько ответов, но ни один из них не решил мою проблему.

Вот краткое описание того, чем я занимаюсь:

В Javascript я вызываю эту функцию с int в качестве параметра, например:

function follow (user_id) {
    // retrieves post for current selection
    fetch(`/follow/${user_id}`, {
        method: 'PUT',
        body: JSON.stringify({
            follow: true
        })
    })
}

Мой путь к url из url.py выглядит следующим образом:

path('follow/<int:user_id>', views.follow, name="follow")

Наконец, в файле views.py вызывается эта функция:

def follow(request, user_id):

    user = User.objects.get(id = user_id)

    if request.method == "PUT":
        data = json.loads(request.body)
        if data.get("follow") is not None:
            followed = Followed(
                user_id = user.id,
                followed_by_id = request.user, 
                )

        followed.save()
        return HttpResponseRedirect(reverse("index"))

    else:        
        return HttpResponseRedirect(reverse("index"))

Я попробовал несколько различных подходов, например, удалить .value, но я продолжаю получать следующую ошибку:

Поле 'id' ожидало число, но получило <SimpleLazyObject: <User: username>>

Я проверяю по пути, и ID является int на всем пути, пока он не будет передан в модель для сохранения.

Я использую модель abstractUser.

Дайте мне знать, если потребуется дополнительная информация.

С уважением,

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