Reputation:
I am trying to make cart at my e-commerce page, full in django. But I have a problem.
Code below after post request occurs an error - Direct assignment to the forward side of a many-to-many set is prohibited. Use order_items.set() instead.
When i use set() then i get error object is not iterable.
What should I do?
def post(self, request, pk):
if 'buy' in request.POST:
item = get_object_or_404(Item, id=pk)
orderItem, created = OrderItem.objects.get_or_create(order_item=item)
order, created = Order.objects.get_or_create(order_user=request.user, order_items=orderItem)
order.save()
HttpResponse('Items added to the database')
models.py
class OrderItem(models.Model):
order_item = models.ForeignKey(Item, on_delete=CASCADE, null=True)
quantity = models.IntegerField(default=1)
class Order(models.Model):
order_user = models.ForeignKey(User, on_delete=CASCADE)
order_items = models.ManyToManyField(OrderItem)
ordered = models.BooleanField(default=False)
total = models.DecimalField(default=0.00, decimal_places=2, max_digits=11)
Upvotes: 1
Views: 215
Reputation: 221
You can not use direct assignment for a many-to-many field. Try this instead:
order, created = Order.objects.get_or_create(order_user=request.user)
order.order_items.add(orderItem)
Upvotes: 1