Так что ваша проблема не в том, что "метод публикации не разрешен"
Вы хотите сделать что-то вроде этого:
[POST,PUT] carts/add_to_cart
, и это должно добавить элементы в корзину пользователя.
Я думаю, что ModelViewSet не очень хороший выбор представления для этой операции (так, как вы хотите это сделать).
Я бы создал новое представление для обработки этого, и оставил бы представление для обработкиОперации с корзиной.
Итак, удалите метод add_to_cart из своего представления.
Вы можете создать представление следующим образом:
class CartUpdateView(generics.UpdateAPIView):
queryset = None
serializer_class = CartUpdateSerializer
def get_object(self):
return self.request.user.cart
Зарегистрируйте это представление для своей конечной точки (даже если ябудет по-разному структурировать конечные точки):
path("cart/add_to_cart", CartUpdateView.as_view())
и создаст CartUpdateSerializer
для добавления товаров в корзину (как вы делали в add_to_cart, но вместо этого он будет в сериализаторе).
И не полагайтесь на то, что Корзина и Пользователь имеют одинаковые идентификаторы, даже если вы их создаете в одно и то же время. Это не гарантировано.