django - 重写 django 代理模型中的 save 方法

标签 django

我正在使用第三方应用程序,我希望重写原始模型的 save() 方法来验证一些数据。

class CustomState(State):
    class Meta:
        proxy = True

    def save(self, *args, **kwargs):
        print('hellooo in save method of state')
        super(State, self).save(*args, **kwargs)

但是上面的代码片段不会运行。

因此我的问题是有没有办法覆盖模型的保存方法?或者,如果这是不可能的,有没有办法在创建第三方模型实例之前添加验证?

最佳答案

该问题与您的型号为 proxy 无关。但你称呼家长的方式错误super().save() :

class CustomState(State):
    class Meta:
        proxy = True

    def save(self, *args, **kwargs):
        print('hellooo in save method of state')

        # The wrong way to call super
        # super(State, self).save(*args, **kwargs)

        super(CustomState, self).save(*args, **kwargs)

看看这个教程,主题A super() Deep Dive

关于django - 重写 django 代理模型中的 save 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62655425/

相关文章:

javascript - Django Javascript 表单验证

python - 在django中计算附近的gps坐标

python - Django文件上传: filename not sticking

python - 更改类后功能不起作用

python - 为什么使用 icontains 过滤 django 区分大小写?

python - 如何向 Django 模型添加百分比字段?

python - 迁移 Django 1.4.5 -> 1.6.5 : ListView, DetailView

python - 多个 Django Celery 任务试图保存到同一个对象并失败

django - 在Django项目中订阅一个redis channel

javascript - PUT 请求被多次调用