improve bazdid 4
This commit is contained in:
1 parent
8fd881e0ea
commit
825f2a5973
13 files changed
+585
-15
No files matched your search
@@ -67,6 +67,25 @@ class Action(models.Model):
|
||||
nazarDT = models.DateTimeField(null=True, blank=True, default=None)
|
||||
grade = models.IntegerField(null=True, blank=True, default=None)
|
||||
|
||||
# --- حسابرسی «حذف» (soft-delete از طریق status='cancell') ---
|
||||
# چرا ستون جدا؟ چون ``cancell`` از قبل معنای «لغو برنامه» را دارد و در گزارشها
|
||||
# هم استفاده میشود. با این دو ستون میتوانیم «حذف توسط کاربر» را از «لغو
|
||||
# عادی» تفکیک کنیم، بدون آنکه منطق محاسبات (که فقط waite/finish را میبیند)
|
||||
# دست بخورد.
|
||||
deleted_at = models.DateTimeField(
|
||||
null=True, blank=True, default=None, verbose_name="زمان حذف",
|
||||
help_text="اگر پر باشد، این اقدام توسط کاربر حذف شده است (status=cancell).",
|
||||
)
|
||||
deleted_by = models.ForeignKey(
|
||||
User, on_delete=models.SET_NULL, null=True, blank=True,
|
||||
related_name="deleted_actions", verbose_name="حذفکننده",
|
||||
)
|
||||
|
||||
@property
|
||||
def is_deleted(self):
|
||||
"""آیا این اقدام با «حذف» کنار گذاشته شده است؟ (نه لغو عادی)"""
|
||||
return self.deleted_at is not None
|
||||
|
||||
class Meta:
|
||||
# ایندکس **پوشا (covering)** برای محاسبهٔ «آخرین بازدید»: هر سه ستونِ لازم
|
||||
# برای فیلتر و تجمیع داخل خودِ ایندکس است، پس دیتابیس به جدول اصلی مراجعه
|
||||
|
||||
Reference in new issue
Block a user