نظرات توسعهدهنده
. جنگو-logicaldelete یک برنامه کوچک و ساده است که من با هم پرتاب کرد به گرفتن برخی از استفاده مجدد از چیزی است که من انجام تقریبا در هر پروژه و هر مدل I ایجاد و nbsp است؛ آن بیش از حد آسان برای داده های خوب برای گرفتن حذف و آن را غیر قابل بازیابی باشد. این هم بیش از حد آسان به رفع این از متد مدل حذف () و فقط رد کردن گزارش تخلف پرونده به عنوان حذف و سپس استفاده مدیران جنگو به نادیده گرفتن رفتار پیش فرض به طوری که موارد منطقی حذف در querysets بازگشت نیست.
دو استثنا با این حال، که من در این قانون مفید ارزیابی کرده اند وجود دارد.
از & nbsp؛ 1. در مدیریت من می خواهم به دیدن همه چیز با یک شاخص یا نه آن حذف شده است، با توانایی فیلتر کردن به سوابق فقط فعال، (یا برای آن موضوع حذف).
از & nbsp؛ 2. من هنوز هم فکر می کنم این یک درخواست معتبر است زمانی که یک آیتم از ذهن برای آن ارزش کلید اصلی، که جسم باید بازگشت، حتی اگر آن مشخص شده است را به عنوان حذف شده است.
با استفاده از جنگو-logicaldelete
با استفاده از برنامه بسیار ساده است:
از & nbsp؛ 1. logicaldelete زیر پوشه قرار دهید و در مسیر پایتون خود را.
از & nbsp؛ 2. به ارث می برند از logicaldelete.models.Model برای تمام مدل که می خواهید برای به اشتراک گذاشتن در این عملکرد.
از & nbsp؛ 3. ایجاد و / یا ثبت نام مدیران برای هر یک از این مدل ها با استفاده از logicaldelete.admin.ModelAdmin
اضافی
حذف منطقی بر اساس تاریخ اسیاب سنگ ستون date_removed گرفته شده است. علاوه بر این، ستون تاریخ DATE_CREATED و date_modified به عنوان یک راحتی جمعیت است.
برنامه های افزودنی ممکن
شما به راحتی می توانید زیر مجموعه این دو کلاس برای ارائه قابلیت های عمومی و مفید برای مدل های خود را.
UUID کلید اولیه
من به طور معمول با استفاده از زمینه UUID برای کلید اصلی من به خاطر آنها مرا قادر می سازد تا سفال جداول من اگر و وقتی که من نیاز به در علاوه بر این، آنها در ارائه شناسه گیج اطلاعات من (مردم نمی توانند تعیین تعداد از یک موضوع خاص من در اند پایگاه داده من، اگر من نمی خواهم آنها بدانند، اما به سادگی به دنبال یک id یک عدد صحیح در URL).
توالی درست
چند بار من آن را مفید به یک عدد صحیح درست در مدل های من است که برای کنترل و تعیین توالی به صراحت اجازه می دهد. من به طور معمول این به عنوان یک اجرای ترتیب نزولی که در آن داده ها از بالا به پایین با مقدار دنباله طبقه بندی شده اند اجرا می کنند.
به منظور اجرای این شما می خواهم زیر مجموعه هم در مدل و ModelAdmin، که در آن مدل خواهد بود علاوه بر آشکار ساده از IntegerField، ModelAdmin، می get_query_set باطل، برای انجام کاری مانند:
SequencedModel کلاس (logicaldelete.models.Model):
کنید. & nbsp؛ توالی = models.IntegerField ()
MyLogicalDeletedManager کلاس (logicaldelete.models.LogicalDeletedManager):
& nbsp؛ از دف get_query_set (خود):
& nbsp؛ اگر self.model:
از & nbsp؛ QS = فوق العاده (MyLogicalDeletedManager، خود) .get_query_set () فیلتر (date_removed__isnull = واقعی)
& nbsp؛ اگر SequencedModel در inspect.getmro (self.model):
& nbsp؛ از QS = qs.order_by ('- توالی')
& nbsp؛ از QS بازگشت
به چه چیزی جدید در این نسخه است:
همه چیز تغییر به LogicalDeleteManager all_with_deleted
LogicalDeleteManager از logicaldelete.models به logicaldelete.managers نقل مکان کرد
حذف querysets حذف شده و همه چیز را از logicaldelete.models.Model
در مورد نیاز:
پایتون
جنگو
نظر یافت نشد