因为我从来不想删除我的USER (BASE)对象,所以我在我的BASE模型上引入了一个delete_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中有一种优雅的方式来实现这一点吗?
发布于 2012-11-26 07:39:47
我想我已经找到了我一直在寻找的答案,因为很明显,描述我的用例的实际术语是在soft delete implementation实现的soft delete cascading中描述的“软删除”。
我会看一看的;还是要感谢你的回复。:)
https://stackoverflow.com/questions/7869812
复制相似问题