【问题标题】:Django SafeDeleteDjango 安全删除
【发布时间】:2026-02-18 04:25:01
【问题描述】:

我在我的 Django 项目https://pypi.org/project/django-safedelete/ 中使用以下库。我所有的模型都设置为“级联软删除”,我遇到了一些麻烦。我遇到的问题的一个例子:

在我的应用程序中,我有一个“供应商”模型,它具有主“用户”模型的外键。这些也都设置为级联软删除。

class VendorProfile(SafeDeleteModel):
    _safedelete_policy = SOFT_DELETE_CASCADE
    creation_time = models.DateTimeField(auto_now_add=True, editable=False)
    modified_time = models.DateTimeField(auto_now=True)

    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True, related_name='vendor_profile')

问题是这样的——假设我进入 Django 管理员并删除了一个供应商模型。它不会删除关联的用户模型,因为它不应该。所以说用户仍然存在,问题在于代码调用中的任何时间,例如:

hasattr(user, "vendor_profile")

即使供应商资料已删除,也会返回 True。

供应商配置文件对象在管理员中不可见,我很困惑为什么会出现这种差异。我应该使用不同的库/制作自己的抽象模型吗?

提前谢谢你!

【问题讨论】:

    标签: python django cascading-deletes soft-delete


    【解决方案1】:

    可能对您来说不是最佳选择,但您可以检查 django-safedelete 提供的 VendorProfile 的 deleted DateTimefield 是否不为空。

    【讨论】: