sto usando Django per un po 'di tempo e di recente ha urtato questo:differenza tra django clear() e delete()
user.groups.clear()
di solito quello che farei è questa:
user.groups.all().delete()
qual è la differenza?
sto usando Django per un po 'di tempo e di recente ha urtato questo:differenza tra django clear() e delete()
user.groups.clear()
di solito quello che farei è questa:
user.groups.all().delete()
qual è la differenza?
user.groups.all().delete()
sarà eliminare gli oggetti di gruppo correlati, mentre user.groups.clear()
si dissociano solo la relazione:
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
.
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.
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