我有2个型号:
class Item(models.Model):
categories = models.ManyToManyField(Category, related_name='category_products')
name = models.CharField(max_length=255)
class Category(models.Model):
name = models.CharField(max_length=255)
我想将一些预定义的数据推送到项目:
item = Item.objects.create(id=pk,name=name, categories=category.id)
我收到以下错误:
Direct assignment to the forward side of a many-to-many set is prohibited.
答案 0 :(得分:2)
错误应该很清楚,您不能直接分配给多对多字段。需要创建对象,并使用double
方法添加
add
如果您有多个值,请使用product = Product.objects.create(id=pk,name=name)
category = Category.objects.get(pk=category.id)
product.categories.add(category)
product.save()
请注意类别是列表对象。
请参阅文档-https://docs.djangoproject.com/en/2.1/topics/db/examples/many_to_many/