0

因为我从不想真正删除我的USER (BASE)对象,所以我delete_date在我的BASE模型上引入了一个:

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!

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

4

1 回答 1

0

我想我已经找到了我一直在寻找的答案,因为显然描述我的用例的实际术语是在软删除实现中实现的软删除级联中描述的“删除

我会看看那个;仍然感谢您的回复。:)

于 2012-11-25T23:39:47.033 回答