如何在Python Django中实现硬删除功能?

时间:2019-07-09 11:42:03

标签: python django

我有一个用户实现类,在那里我想拥有两个类型的删除功能:

class User(AbstractUser):
    nickname = models.CharField(max_length=16, blank=True, null=True) # nickname
    real_name = models.CharField(max_length=12, null=True, blank=True)
    phone = models.CharField(max_length=18)  # telephone
    ...
    status = models.CharField(max_length=1, null=True, default=1)


    def soft_del(self):
        self.status = 4
        return True

    def hard_delete_user(self):
        # what should I do there?
        return True

您看到的一种是软删除用户,另一种是硬删除用户。

我的意思是软删除,一个用户仍在数据库中,但是我不会通过我的代码查询它,硬删除是从数据库表中删除它。

如何实现hard_delete_user功能?

1 个答案:

答案 0 :(得分:0)

这只是self.delete() [Django-doc],因为我对您的理解正确:

class User(AbstractUser):

    # ...

    def hard_delete_user(self):
        self.delete()
        return True

您可能希望限制此功能,例如,鉴于已经被轻柔删除的对象,仅删除User对象,例如:

class User(AbstractUser):

    # ...

    def hard_delete_user(self):
        # example: restrict deletion to softly deleted
        if self.status == 4:
            self.delete()
            return True
        return False