"Не удается запросить "admin": должен быть экземпляр "User""
Я работаю над проектом Django REST Framework, где у меня есть модель корзины, и я хочу разрешить авторизованным пользователям добавлять товары в свою корзину с помощью запроса POST. Однако я продолжаю получать следующую ошибку:
ValueError: Cannot query "admin": Must be "User" instance.
Вот соответствующая часть моей модели корзины:
class Cart(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='carts')
album = models.ForeignKey(Album, on_delete=models.CASCADE)
quantity = models.PositiveIntegerField(default=1)
added_at = models.DateTimeField(default=timezone.now)
А вот изображение корзины, в котором возникает проблема:
class CartView(APIView):
permission_classes = [IsAuthenticated]
def post(self, request):
user = User.objects.get(id=request.user.id) # Force correct User instance
album_id = request.data.get('album_id')
if not album_id:
return Response({"error": "Album ID is required"}, status=400)
try:
album = Album.objects.get(id=album_id)
except Album.DoesNotExist:
return Response({"error": "Album does not exist"}, status=404)
cart_item, created = Cart.objects.get_or_create(user=user, album=album)
if not created:
cart_item.quantity += 1
cart_item.save()
return Response({"message": f"Added {album.title} to cart", "quantity": cart_item.quantity}, status=201)
В Postman я добавляю заголовок авторизации с действительным токеном:
Authorization: Token fcbb7230bb0595694200e3e6effbe67d1c43fb7c
- Убедитесь, что
request.user
должным образом аутентифицирован. - Проверено, что токен принадлежит нужному пользователю в панели администратора.
- Вошел в систему
type(request.user)
и обнаружил, что это не всегда экземплярUser
. - Явно извлек экземпляр
User
, используяUser.objects.get(id=request.user.id)
.