#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)