Как создать объект ManyToMany в представлении django?
Я пытаюсь создать api продукта. Здесь у меня есть файл delivery_option, который имеет отношение многие-ко-многим с моим продуктом. когда я пытаюсь создать продукт, я получаю ошибку TypeError: Direct assignment to the forward side of a many-to-many set is prohibited. Вместо этого используйте delivery_option.set(). Как создать поле "многие ко многим" в django?
@api_view(['POST'])
@permission_classes([IsVendor])
def vendorCreateProduct(request):
data = request.data
user = request.user.vendor
print(data['deliveryOption'])
product = Product.objects.create(
user=user,
name=data['name'],
old_price = data['price'],
discount = data['discount'],
image = data['avatar'],
countInStock = data['countInStock'],
subcategory = Subcategory.objects.get_or_create(name=data['subcategory'])[0],
description=data['description'],
delivery_option = data['deliveryOption'],
)
serializer = ProductSerializer(product, many=False)
return Response(serializer.data)
Как говорит ошибка :
TypeError: Direct assignment to the forward side of a many-to-many set is prohibited. Use delivery_option.set() instead
Это означает, что поле many-to-many не поддерживает прямое присвоение
eg. delivery_option = data['deliveryOption'].
Вы должны использовать add() или set() метод для добавления значений в ваше поле "многие ко многим" следующим образом
product = Product.objects.create(...)
product.delivery_option.add(data['deliveryOption'])