Я использую мягкое удаление в моем администраторе django, сделанное как this .
Проблема в том, что когда я удаляю элемент внешнего ключа, кажется, что он не вызывает удаления для всех элементов, с которыми он связан. Или, может быть, это так, но он не работает с пользовательским def delete , установленным на моей модели.
-Если я удаляю людей, они удаляются мягко, но соответствующая учетная запись остается нетронутой.
-Если я удаляю программные удаления, то, когда я удаляю человека, удаляются и учетные записи, что является правильным.
Таким образом, в идеале, когда я удаляю человека, я бы хотел, чтобы он мягко удалял человека и учетные записи, ссылающиеся на человека, которые также должны быть удалены (помечая их неактивными).
class Person(models.Model):
description = models.CharField(max_length=100)
def delete(self, *args, **kwargs):
self.active = False
self.deleted_date = datetime.now()
self.save()
class Account(models.Model):
name = models.CharField(max_length=50)
person = models.ForeignKey(Person, null=True, blank=True)
active = models.BooleanField(default=True, editable=False)
objects = SoftDeleteManager()
def delete(self, *args, **kwargs):
self.active = False
self.deleted_date = datetime.now()
self.save()
def __unicode__(self):
return "%s: %s" % (self.type,self.name)
ОБНОВЛЕНИЕ: Я обновил вопрос. Я не сказал, что я запускаю мягкое удаление на модели Person. Также добавлено, что при удалении def не переопределяется, что каскадное удаление удаляет работу, но когда я переопределяю удаление, каскадное включение не срабатывает.