django manytomany现场更新

时间:2014-07-29 12:27:09

标签: django many-to-many

我有一本书包含在3个类别中。

现在我可以编辑图书信息,也可以更改类别。由于Book和category之间存在ManyToMany关系,因此我不得不更新本书的类别。

以下是我尝试更新每个类别的方法:

book = Book.objects.get(id=bookid)
newcategory1 = Category.objects.get(id=int(request.POST.get('cat1')))
newcategory2 = Category.objects.get(id=int(request.POST.get('cat2')))
newcategory3 = Category.objects.get(id=int(request.POST.get('cat3')))

book.cat.order_by('id')[:1] = cat1
book.cat.order_by('id')[1:2] = cat2
book.cat.order_by('id')[2:3] = cat3 

但是它说:

'QuerySet' object does not support item assignment

关系

class Category(models.Model):
  CATS = (
    ('Art', 'Art'),
    ('Sport', 'Sport and Athletics'),
    ('Science', 'Science Discovery'),        
  )
  cat = models.CharField(max_length=2, choices=CATS,unique=True)


class Book(models.Model):
  title = models.TextField()
  subtitle = models.TextField()
  cat = models.ManyToManyField(Category)

我正在阅读有关add()remove()方法的内容..如何使用现有类别更新现有图书的类别?

1 个答案:

答案 0 :(得分:1)

据您所知,我知道“删除”和“添加”是这种情况下的最佳选择。

有关Django中关于多对多关系的更多信息和完整示例,您和其他可以提出相同问题的用户,请点击以下链接:https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_many/