Geliştirici yorumlar
. django-logicaldelete ben hemen hemen her projede ve ben oluşturmak her model & nbsp yapmak bir şey dışında bazı yeniden elde etmek için birlikte attı küçük ve basit bir uygulama olduğu; İyi veriler silinir almak ve kurtarılamayan olmak için çok kolay. Bu modelin delete () yöntemi geçersiz ve sadece işaretleme kayıtları silindi olarak ve daha sonra bu mantıksal silinmiş öğeler querysets dönmedi yani varsayılan davranışı geçersiz kılmak için Django'nın Yöneticileri yararlanarak bu sorunu gidermek için de çok kolay.
Ben bu kurala yararlı bulduk ancak iki istisnası vardır.
& Nbsp; 1. Admin Ben (bu konuda silinmiş veya) sadece aktif kayitlari, aşağı filtre yeteneği ile, silinmiş olsun veya olmasın bir göstergesi olan her şeyi görmek istiyorum.
& Nbsp; 2. Ben hala bir öğe nesnesi dönmesi gerektiğini birincil anahtar değeri silindi gibi işaretlenmiş olsa bile, bu tarafından getirilen olduğunda, geçerli bir istek olduğunu düşünüyorum.
Kullanma django-logicaldelete
Uygulamasını kullanarak oldukça basittir:
& Nbsp; 1. Python Yol logicaldelete alt klasör koyun.
& Nbsp; 2. Bu işlevsellik paylaşmak isteyen tüm modeller için logicaldelete.models.Model devralır.
& Nbsp; 3. Oluşturun ve / veya logicaldelete.admin.ModelAdmin kullanarak bu modellerin her biri için yöneticileri kaydol
Ek
Mantıksal siler bir date_removed sütun damgalama tarihe göre işlenir. Buna ek olarak, bir date_created ve DATE_MODIFIED sütunları kolaylık doldurulur.
Olası Eklentiler
Kolayca modellerine genel ve kullanışlı işlevselliği sağlamak için bu iki sınıf alt sınıf.
UUID Birincil Anahtar
Beni etkinleştirmek çünkü genelde ben ihtiyacım olduğunda ve ek olarak, onlar benim verilere bir Obfuscated kimliği sağlamak eğer benim tabloları shard benim birincil anahtarlar için UUID alanları kullanarak (insanlar tespit edemez ben sahip belli bir nesnenin kaç Onları bilmek istemiyorum benim veritabanı, ama sadece) URL bir tamsayı kimliği arıyor.
Sıra Saha
Birçok kez ben yararlı ve açıkça kontrollü sıralama izin benim modellerde bir tamsayı alanı var bulabilirsiniz. Normalde veri dizisi değeriyle yüksekten düşüğe doğru sıralanır bir çeşit inen uygulanması olarak bu uygulamaya.
Bu uygulamaya Model get_query_set geçersiz olacak bir IntegerField, ModelAdmin, bariz bir basit toplama olurdu Modeli ve ModelAdmin, hem alt sınıfı ediyorum amacıyla, bir şey gibi yapmak:
sınıf SequencedModel (logicaldelete.models.Model):
Ve nbsp; dizisi = models.IntegerField ()
sınıf MyLogicalDeletedManager (logicaldelete.models.LogicalDeletedManager):
& Nbsp; def get_query_set (self):
& Nbsp; self.model eğer:
. & Nbsp; qs = süper (MyLogicalDeletedManager, self) .get_query_set () filtre (date_removed__isnull = true)
& Nbsp; SequencedModel halinde inspect.getmro bölgesindeki (self.model):
& Nbsp; qs = qs.order_by ('- dizi')
& Nbsp; return qs
Bu sürümde Yeni nedir:
- LogicalDeleteManager üzerinde all_with_deleted değiştirildi şeyi
- LogicalDeleteManager logicaldelete.managers için logicaldelete.models taşındı
- Silinen kaldırıldı ve her şeyi querysets
Logicaldelete.models.Model
Gereksinimleri :
- Python
- Django
Yorum Bulunamadı