"Невозможно запросить« администратор »: должен быть« пользовательский »экземпляр»Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 "Невозможно запросить« администратор »: должен быть« пользовательский »экземпляр»

Сообщение Anonymous »

Я работаю над проектом Framework Django REST, где у меня есть модель тележки, и я хочу позволить пользователям аутентифицированных добавлять элементы в свою корзину с помощью запроса POST. Тем не менее, я продолжаю получать следующую ошибку: < /p>

Код: Выделить всё

ValueError: Cannot query "admin": Must be "User" instance.
< /code>
Вот соответствующая часть моей модели тележки: < /p>
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)
< /code>
А вот и Cartview, где возникает проблема: < /p>
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)
< /code>
В почтальце я включаю заголовок авторизации с действительным токеном:

Authorization: Token fcbb7230bb0595694200e3e6effbe67d1c43fb7c
  • обеспечить request.user правильно аутентифицируется. к правильному пользователю на панели администратора.
  • Зарегистрированный тип (request.user) и обнаружил, что это не всегда экземпляр пользователя . < Br/>
  • Явно извлечен пользователь экземпляр с использованием user.objects.get (id = request.user.id) .


Подробнее здесь: https://stackoverflow.com/questions/794 ... r-instance
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»