我正在尝试创建新产品。 这是我的模特:
class Product(models.Model) :
door = models.ForeignKey(Door, on_delete=models.CASCADE)
options = models.ManyToManyField(Option)
这是我的观点:
def new_product(request, door_id) :
door = get_object_or_404(Door, id=door_id)
checked = request.POST.getlist('checks[]')
c_checked = []
for check in checked :
new_check = get_object_or_404(Option, name=check)
c_checked.append(new_check)
product = Product.objects.create(
door = door,
options = c_checked,
)
product.save()
return render(request, "confirmation.html")
不幸的是,当我运行服务器时,出现一条错误消息:
直接分配给多对多集的正面是 禁止。使用options.set()代替
如果您有答案,请帮助我。
。
答案 0 :(得分:0)
根据documentation,您应该使用add
。 create
方法代表数据库中的一个插入,但是您要插入多个记录。
def new_product(request, door_id) :
door = get_object_or_404(Door, id=door_id)
checked = request.POST.getlist('checks[]')
c_checked = []
for check in checked :
new_check = get_object_or_404(Option, name=check)
c_checked.append(new_check)
product = Product.objects.create(door=door)
product.options.add(*c_checked)
return render(request, "confirmation.html")