Django在删除带有自定义字段的模型示例时发出信号?

fwzugrvs  于 2023-06-25  发布在  Go
关注(0)|答案(1)|浏览(101)

我在我的Django应用程序中有一个自定义模型字段:

secret = VaultField(max_length=200)

这将获取传递的值并将其保存到HashiCorp Vault,并将其路径存储在数据库中,并在访问时从Vault中检索它。
这很好,我可以在许多模型上使用它。
但现在,当我删除模型的示例时,它不会将其从Vault中删除。
我可以在所有具有VaultField字段的模型上添加一个post delete信号,但这似乎是一个重复的工作。
class VaultField(CharField):类中有什么要添加的吗?
或者只是在一个字段被删除时发出一个后删除信号?

smdncfj3

smdncfj31#

您可以覆盖具有VaultField的模型的delete()方法

class YourModel(models.Model):
    secret = VaultField(max_length=200)

    def delete(self, *args, **kwargs):
        # Put your custom delete code here
        super().delete(*args, **kwargs)

如果你不想在所有的模型中重复删除方法,你也可以在一个抽象模型中创建删除方法,这个抽象模型可以从你的其他模型中继承。

class Base(models.Model):
    
    class Meta:
        abstract = True

或者你甚至可以在mixin类中编写它

相关问题