Django 删除时使用“删除”;删去“印花”;和自动级联

Django 删除时使用“删除”;删去“印花”;和自动级联,django,cascade,stamp,Django,Cascade,Stamp,由于我从不想实际删除我的USER(BASE)对象,我在我的BASE模型上引入了delete\u date: class BASE (models.Model): class Meta: abstract = True app_label = 'base' verbose_name_plural = 'bases' objects = BASE_MANAGER () insert_date = models.DateT

由于我从不想实际删除我的
USER(BASE)
对象,我在我的
BASE
模型上引入了
delete\u date

class BASE (models.Model):

    class Meta:

        abstract = True
        app_label = 'base'
        verbose_name_plural = 'bases'

    objects = BASE_MANAGER ()

    insert_date = models.DateTimeField (default = datetime.now (), auto_now_add = True)
    update_date = models.DateTimeField (default = datetime.now (), auto_now = True)
    delete_date = models.DateTimeField (null = True, blank = True)

    def save (self):

        super (BASE, self).save ()

    def delete (self):

        if not self.delete_date:
            self.update_date = datetime.now ()
            self.delete_date = datetime.now ()
            self.save ()
        else:
            pass ## no delete!

现在因为我没有在
BASE.delete中包含
super(BASE,self).delete()
,所以没有执行实际的SQL,这很好;不幸的是,这也停止了外键的级联。在Django中是否有一种优雅的方法来实现这一点?

我想我已经找到了我一直在寻找的答案,因为很明显,描述我的用例的实际术语是“软删除”,如中所述


我来看看;仍然感谢您的回复。:)

你能解释一下“停止外键级联”是什么意思吗?如果不是删除,您希望级联什么?例如,如果您删除一个用户,u Django通常会传播到ACCOUNT类型的所有u.帐户(至少在管理界面中),然后这些帐户也会被删除(在SQL中删除级联)。同样,如果我删除了相应的用户对象,我希望自动设置我的帐户(基础)对象的删除日期。好的,因此帐户(基础)有一个FK to USER,当你删除一个用户时,你希望它级联到相关的帐户对象,但使用你的特殊删除方法,而不是实际删除它。。。而这目前还不起作用;但我想我已经找到了我一直在寻找的答案,因为描述我用例的实际术语显然是在[soft delete implementation][2]实现的[soft delete cascading][1]中描述的“soft delete”。我来看看;仍然感谢您的回复。:)[1] :[2]:添加此答案以结束此问题。