手动创建多对多关系-设置关系时出错

时间:2018-10-27 06:33:54

标签: django django-models

我有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.

1 个答案:

答案 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/