像魔术一样在 Django 中归档数据?

Archiving data in Django like a magic?

我的项目有很多模型。

每个模型都有一个字段 is_active 在生产中为 True,在完成或未使用时为 False。

Django 对此有任何默认的魔术解决方案吗? 我有大约 40-60 个模型,所以理想情况下应该是一个解决方案涵盖所有模型。

我发现这个答案 Archiving model data in Django 需要为每个模型单独开发工作,这将创建很多模型。

有什么神奇的替代品吗?

我会用 Abstract Model Inheritance 解决这个问题。

这将允许您为一个 class 和一组字段编写逻辑,它将应用于所有子 classes。

class IsActive(models.Model):
    class Meta:
        abstract = True
    is_active = models.BooleanField(default=False)

    def toggle_active(self):
        self.is_active = !self.is_active

class Child(IsActive):
    # This object now has `is_active` and `toggle_active` fields.