Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Desfazendo uma amizade.

Estou tentando implementar a opção de desfazer a amizade.

Para isso, criei um botão visualização do perfil que para "desconectar".

Esse botão está mapeado no urls.py chamando a função de view "desconectar", que por sua vez chama a função "remove_contato" da classe Perfil passando como paramtetro o objeto "usuario" a ser removido.

Meu problema começa aqui. Na implementação do método "remove_contato.

Pensei em pegar uma lista de perfis do atributo "contatos" do perfil logado, buscar o perfil que irei desfazer a amizade, remover ele da lista e salvar no banco o perfil_logado.

Fazer o inverso (remover o perfil logado da lista de contatos do perfil removido)

E retornar para o index.

O problema é que não estou conseguindo uma função que remova dessa lista. Pelo o que eu li na documentação do DJango, parece que eles retiraram o remove() de objetos com relacionamento muitos para muitos.

Alguém sabe me dizer como eu faria para implementar essa alteração?

1 resposta
solução!

Consegui. Era mais simples do que eu imaginava.

Bastava chamar o método remove a partir do atributo muito para muitos do objeto Perfil, passando o objeto a ser removido da lista. O resto o Django faz sozinho. :)

def remove_contato (self, perfil_removido): self.contatos.remove(perfil_removido)