• Как Архивировать Пользователей Django при удалении?

    @daner07 Автор вопроса
    Дмитрий Шицков,
    Пользователь помечается как удаленный (ставится дата удаления), но при вызове objects.all() все равно показывается.

    Скину код models ниже

    class SoftDeletionManager(models.Manager):
        def __init__(self, *args, **kwargs):
            self.alive_only = kwargs.pop('alive_only', True)
            super(SoftDeletionManager, self).__init__(*args, **kwargs)
    
        def get_queryset(self):
            if self.alive_only:
                return SoftDeletionQuerySet(self.model).filter(deleted_at=None)
            return SoftDeletionQuerySet(self.model)
    
        def hard_delete(self):
            return self.get_queryset().hard_delete()
    
    
    class SoftDeletionQuerySet(QuerySet):
        def delete(self):
            date_now = timezone.now()
            return super(SoftDeletionQuerySet, self).update(deleted_at=date_now)
    
        def hard_delete(self):
            return super(SoftDeletionQuerySet, self).delete()
    
        def alive(self):
            return self.filter(deleted_at=None)
    
        def dead(self):
            return self.exclude(deleted_at=None)
    
    
    class SoftDeletionModel(models.Model):
        deleted_at = models.DateTimeField(blank=True, null=True)
    
        objects = SoftDeletionManager()
        all_objects = SoftDeletionManager(alive_only=False)
    
        class Meta:
            abstract = True
    
        def delete(self):
            date_now = timezone.now()
            self.deleted_at = date_now
            self.save()
    
        def hard_delete(self):
            super(SoftDeletionModel, self).delete()
    
    
    class User(AbstractUser, SoftDeletionModel):
        phone = models.CharField(verbose_name='Номер телефона - Логин', max_length=20, unique=True, db_index=True)
    
        iin = models.CharField(verbose_name="ИИН", max_length=12, unique=True, blank=True)
    
        USERNAME_FIELD = 'phone'
        REQUIRED_FIELDS = ["username"]
    
        def __str__(self):
            return self.phone
    
        class Meta:
            verbose_name = 'Аккаунт'
            verbose_name_plural = 'Аккаунты'
    
    # Модель для TodoList
    class Todolist(models.Model):
        user_id = models.ForeignKey('User', on_delete=models.PROTECT, verbose_name='Id пользователя')
        task = models.TextField(verbose_name='Задача')
        start_time = models.DateTimeField(verbose_name='Дата начала')
        end_time = models.DateTimeField(verbose_name='Дата завершения')
    
        def __str__(self):
            return self.user_id
    
        class Meta:
            verbose_name = 'Список задач'
            verbose_name_plural = 'Список задач'
            ordering = ['user_id']  # Сортировка в админке
  • Как Архивировать Пользователей Django при удалении?

    @daner07 Автор вопроса
    Dr. Bacon,
    решил уже так сделать.

    а как именно это сделать?
    Как по ссылке сделать не получается
  • Как Архивировать Пользователей Django при удалении?

    @daner07 Автор вопроса
    Дмитрий Шицков,

    Спасибо большое!

    Сделал все как там сказано, но почему-то не срабатывает на классе

    class User(SoftDeletionModel, AbstractUser)

    Не могли бы Вы помочь разобраться почему не работает?