2015-03-30 14 views

risposta

9

user.groups.all().delete() sarà eliminare gli oggetti di gruppo correlati, mentre user.groups.clear() si dissociano solo la relazione:

https://docs.djangoproject.com/en/1.7/ref/models/relations/#django.db.models.fields.related.RelatedManager.clear

Rimuove tutti gli oggetti dalla relativa serie oggetto: Nota questo non elimina il oggetti correlati - semplicemente li dissocia.

noti che eliminando gli oggetti correlati può avere l'effetto collaterale che altri utenti appartenenti allo stesso gruppo possono anche essere cancellati (da cascata), a seconda delle regole specificate da ForeignKey on_delete.

+0

La cascata funzionerà sempre in un modo, dalla destinazione di 'ForeignKey' ai relativi oggetti - in questo caso solo dall'oggetto gruppo al modello intermedio che collega l'utente e il gruppo, poiché è un numero -molti rapporti. La rimozione di un gruppo non cancellerà mai i suoi utenti, almeno non quando si utilizza "PermissionsMixin" di Django come usato da "AbstractUser" o "User'. – knbk

4
user.groups.clear() 

Questo sblocca i gruppi dall'utente, ma non influisce sui gruppi stessi.

user.groups.all().delete() 

Elimina i gruppi attuali. Probabilmente non vuoi farlo perché potrebbero esserci anche altri utenti che appartengono a quei gruppi.