与许多领域斗争

时间:2018-06-22 15:01:26

标签: django django-models django-views

我正在尝试创建新产品。 这是我的模特:

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()代替

如果您有答案,请帮助我。

1 个答案:

答案 0 :(得分:0)

根据documentation,您应该使用addcreate方法代表数据库中的一个插入,但是您要插入多个记录。

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")