Django - 过滤掉轻微删除的行的最佳方法是什么?

时间:2016-10-22 19:37:41

标签: django database-design

当我的程序执行软删除时,软删除的行将被标记为无效或已删除(例如person.deleted=True)。问题是,确保每次从该表中检索数据只返回活动记录而不必将deleted=False参数添加到filter的最佳方法是什么?方法(不仅重复,而且容易出错)。

1 个答案:

答案 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