Борясь со многими многих областях

Обновить

April 2019

Просмотры

215 раз

1

Я пытаюсь создать новый продукт. Вот моя модель:

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

According to the documentation, you should use add. create method represents one insert in a database but you want to insert multiple records.

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