Mover objetos de um associação muitos-para-muitos para outro no Django?

votos
0

Tem uma questão. Digamos que eu tenha dois modelos em uma relação muitos-para-muitos (artigo, publicação). Artigo A é na Publicação Um, Dois e Três. Eu quero removê-lo a partir dessas publicações e colocá-lo em X. Publicação A documentação do Django cobre exclusão de objetos e adicionando objetos, mas eu não quero excluir nem adicionar objetos, apenas 'movimento'-los. Como eu faria isso?

Desde já, obrigado,

J

Publicado 21/04/2009 em 20:02
fonte usuário
Em outras línguas...                            


2 respostas

votos
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()
Respondeu 21/04/2009 em 20:14
fonte usuário

votos
1

Você só precisa remover as associações com publicações 1, 2, e 3, e criar uma associação com a publicação 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)

Não é um bom exemplo de como fazer isso nos docs django .

Respondeu 21/04/2009 em 20:12
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more