komentar Developer
Django-logicaldelete adalah aplikasi kecil dan sederhana yang saya melemparkan bersama-sama untuk mendapatkan beberapa penggunaan kembali dari sesuatu yang saya lakukan di hampir setiap proyek dan setiap model yang saya buat & nbsp;. Ini terlalu mudah untuk data yang baik untuk dihapus dan itu dipulihkan. Ini juga terlalu mudah untuk memperbaiki ini dengan meng-override delete) metode model (dan hanya lesu catatan sebagai dihapus dan kemudian memanfaatkan Manajer Django untuk merubah tingkah laku default sehingga item logis dihapus tidak dikembalikan dalam querysets.
Ada dua pengecualian Namun, yang saya temukan berguna untuk aturan ini.
& Nbsp; 1. Dalam admin saya ingin melihat segala sesuatu dengan indikator apakah atau tidak itu telah dihapus, dengan kemampuan untuk menyaring ke catatan hanya aktif, (atau dihapus dalam hal ini).
& Nbsp; 2. Saya masih berpikir itu adalah permintaan yang valid ketika item diambil oleh nilai itu kunci utama, bahwa objek harus kembali, bahkan jika itu ditandai sebagai dihapus.
Menggunakan Django-logicaldelete
Menggunakan aplikasi ini cukup sederhana:
& Nbsp; 1. Pasang logicaldelete sub-folder di jalan Python Anda.
& Nbsp; 2. Mewarisi dari logicaldelete.models.Model untuk semua model yang ingin Anda untuk berbagi dalam fungsi ini.
& Nbsp; 3. Membuat dan / atau Daftar admin untuk masing-masing model ini menggunakan logicaldelete.admin.ModelAdmin
tambahan
Menghapus logis ditangani oleh tanggal stamping kolom date_removed. Selain itu, kolom DATE_CREATED dan date_modified akan diisi sebagai kenyamanan.
Kemungkinan Ekstensi
Anda dapat dengan mudah subclass dua kelas tersebut untuk menyediakan fungsionalitas generik dan berguna untuk model Anda.
UUID Primary Key
Saya biasanya menggunakan bidang UUID untuk kunci utama saya karena mereka memungkinkan saya untuk beling meja saya jika dan ketika saya perlu, di samping itu, mereka memberikan id dikaburkan data saya (orang tidak dapat menentukan berapa banyak dari objek tertentu yang saya miliki di database saya, jika saya tidak ingin mereka tahu, tapi hanya mencari id integer dalam URL).
Urutan Lapangan
Banyak kali saya merasa berguna untuk memiliki medan integer pada model saya yang memungkinkan untuk dan sequencing eksplisit dikendalikan. Saya biasanya melaksanakan ini sebagai semacam turun implementasi di mana data diurutkan dari tinggi ke rendah dengan nilai urut.
Dalam rangka untuk melaksanakan hal ini Anda akan subclass kedua Model dan ModelAdmin, di mana Model akan menjadi tambahan yang sederhana yang jelas dari IntegerField, yang ModelAdmin, akan menimpa get_query_set, melakukan sesuatu seperti:
kelas SequencedModel (logicaldelete.models.Model):
& Nbsp; urutan = models.IntegerField ()
kelas MyLogicalDeletedManager (logicaldelete.models.LogicalDeletedManager):
& Nbsp; def get_query_set (self):
& Nbsp; jika self.model:
& Nbsp;. Qs = super (MyLogicalDeletedManager, diri) .get_query_set () menyaring (date_removed__isnull = True)
& Nbsp; jika SequencedModel di inspect.getmro (self.model):
& Nbsp; qs = qs.order_by ('- urut')
& Nbsp; kembali qs
Apa yang baru dalam rilis ini:
- Berubah segalanya untuk all_with_deleted di LogicalDeleteManager
- LogicalDeleteManager pindah dari logicaldelete.models ke logicaldelete.managers
- Dihapus dihapus dan semuanya querysets dari logicaldelete.models.Model
Persyaratan :
- Python
- Django
Komentar tidak ditemukan