【发布时间】:2019-02-18 06:52:09
【问题描述】:
当我尝试将当前登录的用户添加到另一个关系为ManyToManyField 时,我收到此错误。
TypeError: Direct assignment to the forward side of a many-to-many set is prohibited. Use user.set() instead.
这是我的代码:
Views.py
def add_to_cart(request , item):
name = item
size = request.POST.get("size")
extras = request.POST.get("extras")
c = Cart(item=name , size=size , extras=extras , user=request.user)
c.save()
return render(request , "orders/add_items.html" , {"message":f"{name} added to cart"})
Models.py
class Cart(models.Model):
item = models.CharField(max_length=64)
size = models.DecimalField(max_digits=5,decimal_places=2)
extras = models.CharField(max_length=64 , null=True, blank=True)
user = models.ManyToManyField(User , related_name="member")
def __str__(self):
return f"{item} added by {user}"
【问题讨论】:
-
不是从模型创建实例然后保存,而是执行以下操作,new_cart = Cart.objects.create(fieldname=value) new_cart.user.set(
)。 create 将允许您添加或设置 M2M 字段
标签: python django python-3.x