当我的程序执行软删除时,软删除的行将被标记为无效或已删除(例如person.deleted=True
)。问题是,确保每次从该表中检索数据只返回活动记录而不必将deleted=False
参数添加到filter
的最佳方法是什么?方法(不仅重复,而且容易出错)。
答案 0 :(得分:2)
您可以尝试为模型创建自定义对象管理器。这可能是否足够,具体取决于您的要求和进一步的项目实施。
class Person(models.Model):
# ...
objects = PersonManager()
class PersonManager(models.Manager):
def all(self, *args, **kwargs):
return super(PersonManager, self).filter(deleted=False)
def deleted(self, *args, **kwargs):
return super(PersonManager, self).filter(deleted=True)
# ...
更新:另一种方便的方法是使用django-livefield