Я хочу сохранить данные в своей базе данных после удаления и отслеживать их. Как я могу достичь этой цели?

#python #django #django-models #soft-delete

#python #django #django-модели #мягкое удаление

Вопрос:

у меня есть простая категория модели. Я хочу мягко удалять экземпляры и отслеживать их в своей БД

 from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone
from django_currentuser.middleware import get_current_user, get_current_authenticated_user

from django_currentuser.db.models import CurrentUserField


class Category(models.Model):
    name       = models.CharField(max_length=80)
    created_on = models.DateTimeField("Created At", auto_now_add = True, null = True)
    created_by = CurrentUserField(related_name='created_by')
    updated_on = models.DateTimeField("Updated At", auto_now = True, null = True)
    updated_by = CurrentUserField(related_name='updated_by')
    deleted_on = 
    deleted_by = 

def __str__(self):
    return self.name
 

Ответ №1:

вы можете soft_delete объект, добавив логическое значение

    delete =  models.BooleanField(default=False, null=True)
 

и deleted_by

 deleted_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True)
 

и deleted_on

 deleted_on = models.DateTimeField(auto_now_add=True)
 

Комментарии:

1. Внутри ваших представлений вы должны фильтровать данные как Category.objects.filter(delete= False)