Ajuda com exclusão de reconds em Django

votos
1
        for u in Users.objects.all():

            for g in u.group.all():
                if g not in Groups.objects.filter(domain__user=u.id):
                   u.group.filter(id=g.id).delete()

Como faço para excluir as entradas na tabela de relacionamento. Neste caso, eu tenho muitos para muitos relação entre Grupos e usuários. A instrução de exclusão no código acima exclui o grupo da tabela de Grupos. Eu só quero excluir o relacionamento entre o usuário eo grupo da tabela Users_group. Como eu faço isso.

obrigado

Publicado 18/03/2009 em 22:04
fonte usuário
Em outras línguas...                            


1 respostas

votos
4

A chave para pensar sobre este problema é perceber que u.group é um gerente, assim como Groups.objects é um gerente (por padrão, o primeiro é uma subclasse do segundo). A maioria das operações que invocam o u.group afetará a mesa grupo inteiro (com a possibilidade de que ele primeira filtros para baixo para objectos relacionados com u). Isso significa que, assumindo g está relacionada com u,

u.group.filter(id=g.id).delete()

deve funcionam da mesma forma

Groups.objects.filter(id=g.id).delete()

Em ambos os casos, .filter () retorna um queryset (completamente ingênuo em relação à u) e .delete () apaga todos os membros.

A boa notícia é que u.group deve ser um ManyRelatedManager, o que significa que haverá métodos adicionais disponíveis para ele. Para muitos exemplos, verifique aqui . O que deve caber seu cenário:

u.group.remove(g)
Respondeu 18/03/2009 em 23:01
fonte usuário

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