在django中将对象从一个多对多关联移动到另一个?

时间:2009-04-21 19:02:17

标签: django django-models many-to-many

有个问题。假设我在多对多关系中有两个模型(文章,出版物)。 A条出版物为第一,第二和第三出版物。我想将它从那些出版物中删除并放入X出版物中.django文档包括删除对象和添加对象,但我不想删除也不想添加对象,只是“移动”它们。我该怎么做?

提前致谢,

Ĵ

2 个答案:

答案 0 :(得分:2)

pubx = Pubblication(.....)
pubx.save()

article_obj = Article.objects.get(id=1)

remove_from_lst = ["pubblication a", "pubblication b", "pubblication c"]
remove_from_qs = Pubblication.objects.filter(name__in=remove_from_lst)

for qs in remove_from_qs:
    article_obj.pubblications.remove(qs)

article_obj.pubblications.add(pubx)

article.save()

答案 1 :(得分:1)

您只需要删除与出版物1,2和3的关联,并创建与出版物x的关联:

# `a` being an instance of the Article object, pub{1,2,3,x}, being 
# instances of Publication objects
a.publications.remove(pub1)
a.publications.remove(pub2)
a.publications.remove(pub3)
a.publications.add(pubx)

有一个很好的例子,说明如何在django docs中执行此操作。