Ontwikkelaars kommentaar
Django-logicaldelete is 'n klein en eenvoudige app wat ek gooi saam 'n paar hergebruik uit iets wat ek doen in byna elke projek en elke model Ek skep. & nbsp; Dit is te maklik vir 'n goeie data te verwyder kry en dit herwin. Dit is ook te maklik om dit op te los deur oorheersende delete metode die model se () en net verligting rekords as geskrap en dan gebruik te maak van Django se Managers standaard gedrag ignoreer sodat logies geskrap items nie teruggekeer in querysets.
Daar is twee uitsonderings egter dat ek nuttig gevind om hierdie reël.
& Nbsp; 1. In die admin Ek hou om alles te sien met 'n aanduiding van of dit nie kon geskrap gewees het, met die vermoë om af te filtreer net aktiewe rekords, (of verwyder vir die saak).
& Nbsp; 2. Ek dink nog steeds dit is 'n geldige versoek wanneer 'n item is vergesog deur sy primêre sleutel waarde, wat die voorwerp moet terugkeer, selfs al is dit gemerk as geskrap.
Gebruik Django-logicaldelete
Die gebruik van die inligting is eenvoudig:
& Nbsp; 1. Sit die sub-gids logicaldelete in jou Python pad.
& Nbsp; 2. Erf logicaldelete.models.Model vir alle modelle wat jy wil om te deel in hierdie funksionaliteit.
& Nbsp; 3. Skep en / of Registreer admins vir elk van hierdie modelle deur logicaldelete.admin.ModelAdmin
Bykomende
Logiese uitvee word hanteer deur datum gestempel n date_removed kolom. Daarbenewens sal 'n date_created en date_modified kolomme bevolk as 'n gerief.
Moontlike Uitbreidings
Jy kan maklik oorerf hierdie twee klasse generiese en nuttige funksies te gee aan jou modelle.
UUID Primêre Sleutel
Ek behulp tipies UUID velde vir my primêre sleutels omdat hulle in staat stel om my te segment my tafels indien en wanneer ek nodig het om, benewens, hulle bied 'n verborge id om my data (mense kan nie bepaal hoeveel van 'n sekere voorwerp Ek het in my databasis, as ek nie wil hê hulle moet weet nie, maar net op soek 'n 'n heelgetal id in die URL).
Volgorde Field
Baie keer het ek dit nuttig vind om 'n heelgetal veld op my modelle wat voorsiening maak vir en uitdruklik beheer volgorde. Ek gewoonlik implementeer as 'n soort neerdaal implementering waar die data gesorteer van hoog na laag deur ry waarde.
Ten einde om dit te implementeer jy beide die model en ModelAdmin, waar die Model 'n duidelike eenvoudige toevoeging van 'n IntegerField, die ModelAdmin, sou wees sou get_query_set ignoreer oorerf, om iets te doen soos:
klas SequencedModel (logicaldelete.models.Model):
& Nbsp; volgorde = models.IntegerField ()
klas MyLogicalDeletedManager (logicaldelete.models.LogicalDeletedManager):
& Nbsp; def get_query_set (self):
& Nbsp; as self.model:
& Nbsp;. Qs = super (MyLogicalDeletedManager, self) .get_query_set () filter (date_removed__isnull = True)
& Nbsp; as SequencedModel in inspect.getmro (self.model):
& Nbsp; qs = qs.order_by ('- reeks')
& Nbsp; terugkeer qs
Wat is nuut in hierdie release:
- alles verander om all_with_deleted op LogicalDeleteManager
- LogicalDeleteManager verskuif vanaf logicaldelete.models om logicaldelete.managers
- verwyder verwyder en alles querysets van logicaldelete.models.Model
Vereistes :
- Python
- Django
Kommentaar nie gevind