2009-04-21 9 views
0

Haben Sie eine Frage. Angenommen, ich habe zwei Modelle in einer Viele-zu-Viele-Beziehung (Artikel, Publikation). Artikel A ist in der Veröffentlichung Eins, Zwei und Drei. Ich möchte es aus diesen Veröffentlichungen entfernen und es in Publikation X einfügen. Die django-Dokumentation behandelt das Löschen von Objekten und das Hinzufügen von Objekten, aber ich möchte keine Objekte löschen oder hinzufügen, sondern nur "verschieben". Wie würde ich das tun?Objekte in Django von einer Viele-zu-Viele-Assoziation in eine andere verschieben?

Vielen Dank im Voraus,

J

Antwort

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

Sie müssen nur die Verbände mit Publikationen 1, 2 und 3, zu entfernen und eine Verbindung mit Publikation erstellen 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) 

Es gibt ein gutes Beispiel dafür, wie man das in der django docs macht.

Verwandte Themen