2009-04-21 10 views
0

Vous avez une question. Dites que j'ai deux modèles dans une relation plusieurs-à-plusieurs (article, publication). L'article A figure dans les publications 1, 2 et 3. Je veux l'enlever de ces publications et le mettre dans la publication X. La documentation de django couvre la suppression d'objets et l'ajout d'objets, mais je ne veux pas supprimer ni ajouter d'objets, mais simplement les 'déplacer'. Comment ferais-je cela?Déplacer des objets d'une association many-to-many vers une autre dans django?

Merci à l'avance,

J

Répondre

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

Vous avez juste besoin d'enlever les associations avec les publications 1, 2 et 3, et créer une association avec la publication 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) 

Il est un bon exemple de la façon de le faire dans le django docs.