django-logicaldelete

Software screenshot:
django-logicaldelete
Podrobnosti Software:
Verze: 1.1 Beta 1 Dev3
Datum uploadu: 12 May 15
Vývojka: Patrick Altman
Licence: Volný
Popularita: 1

Rating: nan/5 (Total Votes: 0)

vývojáře komentáře
Django-logicaldelete je malý a jednoduchá aplikace, které jsem hodil dohromady, aby se trochu opětovné použití z něčeho, co dělám v téměř každém projektu a každý model jsem vytvořit. & nbsp; Je to příliš snadné pro dobré údaje, aby se odstranil to být neodstranitelné. Je to také příliš snadné opravit přepsáním metodu modelu vymazání () a stejně ochabující záznamy jako odstraněné a pak využití Manažeři Django je přepsat výchozí chování tak, aby logicky odstraněné položky nejsou vráceny v querysets.
Existují dvě výjimky však, že jsem našel užitečné z tohoto pravidla.
& Nbsp; 1. V admin bych si přál, aby všechno, co s indikátorem toho, zda nebo ne to byl odstraněn, s možností filtrování dolů právě aktivní záznamy (nebo odstraněných na to přijde).
& Nbsp; 2. Pořád si myslím, že je platný požadavek, když položka je přitažené za vlasy, podle to je hodnota primární klíč, že objekt by měl vrátit, i když je označen jako odstraněné.
Používání Django-logicaldelete
Použití aplikace je velmi jednoduchá:
& Nbsp; 1. Dejte logicaldelete podsložku v Pythonu Path.
& Nbsp; 2. Převzít od logicaldelete.models.Model pro všechny modely, které chcete sdílet v této funkci.
& Nbsp; 3. Vytvoření a / nebo Zaregistrujte správci pro každý z těchto modelů pomocí logicaldelete.admin.ModelAdmin
Další
Logické odstraní jsou zpracovány podle data ražením date_removed sloupec. Kromě toho bude DATE_CREATED a date_modified sloupce být naplněna jako pohodlí.
Možné Rozšíření
Můžete snadno podtřídy těchto dvou tříd poskytnout obecný a užitečnou funkčnost vašich modelů.
UUID Primární klíč
I typicky používat UUID polí pro mé primárních klíčů, protože umožňují, abych Shard mé tabulky, zda a kdy potřebuji, navíc poskytují obfuscated id s mými daty (lidé nemohou zjistit, kolik z určitého objektu mám v můj databáze, pokud nechci, aby věděli, ale prostě hledají je celé číslo ID v adrese URL).
Sekvence pole
Mnohokrát jsem si, že je užitečné mít celočíselné pole na mých modelech, které umožňují a výslovně řízené sekvenování. I za normálních okolností realizovat to jako implementace Řadit sestupně kde jsou data seřazeny od vysokého na nízké sekvenční hodnotou.
S cílem realizovat tento byste podtřída Uvedený model i ModelAdmin, kde by být model zřejmou jednoduché přídavek IntegerField, na ModelAdmin, by se přepsat get_query_set, udělat něco jako:
třída SequencedModel (logicaldelete.models.Model):
& Nbsp; sekvence = models.IntegerField ()
třída MyLogicalDeletedManager (logicaldelete.models.LogicalDeletedManager):
& Nbsp; def get_query_set (self):
& Nbsp; pokud self.model:
& Nbsp;. Qs = super (MyLogicalDeletedManager, self) .get_query_set () filtr (date_removed__isnull = True)
& Nbsp; pokud SequencedModel v inspect.getmro (self.model):
& Nbsp; qs = qs.order_by ('- sekvence ")
& Nbsp; zpáteční qs

Co je nového v této verzi:

  • Změnil všechno all_with_deleted na LogicalDeleteManager
  • LogicalDeleteManager přestěhoval z logicaldelete.models do logicaldelete.managers
  • Odstraněno zrušuje a všechno querysets z logicaldelete.models.Model

Požadavky na :

  • Python
  • Django

Ostatní software developer Patrick Altman

Komentáře k django-logicaldelete

Komentáře nebyl nalezen
Přidat komentář
Zapnout obrázky!