django-logicaldelete

Software screenshot:
django-logicaldelete
Dettagli del software:
Versione: 1.1 Beta 1 Dev3
Data di caricamento: 12 May 15
Sviluppatore: Patrick Altman
Licenza: Libero
Popolarità: 1

Rating: nan/5 (Total Votes: 0)

Commenti sviluppatori
django-logicaldelete è una piccola e semplice applicazione che ho buttato insieme per ottenere un po 'il riutilizzo di una cosa che faccio in quasi ogni progetto e ogni modello creo. & nbsp; E' troppo facile per i buoni dati vengono eliminati ed essere irrecuperabile. E 'anche troppo facile da risolvere questo sovrascrivendo il metodo del modello delete () e proprio contrassegnare i record come eliminati e poi sfruttando gestori di Django per ignorare il comportamento predefinito in modo che gli elementi logicamente eliminati non vengono restituiti in querysets.
Ci sono però due eccezioni, che ho trovato utile a questa regola.
& Nbsp; 1. Nel admin mi piace vedere tutto con un indicatore di se o non è stato eliminato, con la possibilità di filtrare fino ai record solo attivi, (o cancellati per quella materia).
& Nbsp; 2. Penso ancora che si tratta di una richiesta valida quando un prodotto viene recuperato dal suo valore chiave primaria, che l'oggetto deve restituire, anche se è contrassegnato come eliminato.
Utilizzo django-logicaldelete
Utilizzando l'applicazione è piuttosto semplice:
& Nbsp; 1. Mettere la sottocartella logicaldelete nel vostro percorso di Python.
& Nbsp; 2. Eredita da logicaldelete.models.Model per tutti i modelli che si desidera condividere questa funzionalità.
& Nbsp; 3. Creare e / o amministratori Registrati per ognuno di questi modelli che utilizzano logicaldelete.admin.ModelAdmin
Ulteriori
Eliminazioni logiche sono gestite da sovrimpressione della data una colonna date_removed. Inoltre, a colonne DATE_CREATED e DATE_MODIFIED verranno popolati come vantaggio.
possibili estensioni
Si può facilmente creare una sottoclasse queste due classi per fornire funzionalità generiche e utile per i vostri modelli.
UUID Chiave primaria
Io in genere utilizzando i campi UUID per le mie chiavi primarie perché mi permettono di coccio mie tabelle se e quando ho bisogno di, inoltre, forniscono un id offuscato i miei dati (la gente non può determinare il numero di un certo oggetto che ho in il mio database, se non voglio che sappiano, ma semplicemente guardando un id un numero intero URL).
Campo Sequenza
Molte volte mi trovo utile avere un campo intero sui miei modelli che permettono di sequenziamento e controllato in modo esplicito. Io normalmente implementare questa come una implementazione ordine decrescente in cui i dati vengono ordinati dall'alto verso il basso in base al valore di sequenza.
Al fine di implementare questo che ci si sottoclasse sia il modello e ModelAdmin, dove il modello sarebbe un evidente semplice aggiunta di un IntegerField, il ModelAdmin, sarebbe ignorare get_query_set, di fare qualcosa di simile:
SequencedModel classe (logicaldelete.models.Model):
& Nbsp; sequence = models.IntegerField ()
MyLogicalDeletedManager classe (logicaldelete.models.LogicalDeletedManager):
& Nbsp; def get_query_set (self):
& Nbsp; se self.model:
. & Nbsp; qs = super (MyLogicalDeletedManager, auto) .get_query_set () filtrare (date_removed__isnull = True)
& Nbsp; se SequencedModel a inspect.getmro (self.model):
& Nbsp; qs = qs.order_by ('- la sequenza')
& Nbsp; qs ritorno

Cosa c'è di nuovo in questa versione:

  • Cambiato tutto per all_with_deleted su LogicalDeleteManager
  • LogicalDeleteManager spostato da logicaldelete.models a logicaldelete.managers
  • Rimosso cancellato e tutto querysets da logicaldelete.models.Model

Requisiti

  • Python
  • Django

Altri software di sviluppo Patrick Altman

django-trending
django-trending

14 Apr 15

formly
formly

11 Apr 15

Commenti a django-logicaldelete

I commenti non trovato
Aggiungi commento
Accendere le immagini!