关于python:Django模型:如何使用mixin类来覆盖django模型的功能,如save

Django Model: How to use mixin class to override django model for function likes save

我想在每次保存模型之前验证值。所以,我必须重写save函数。代码在上几乎是相同的,我想在mixin类中编写它。但是失败了我不知道怎么写超级func。

我英语不好,对不起。

1
2
3
4
5
6
7
8
9
10
11
class SyncableMixin(object):
  def save(self, *args, **kwargs):
    try:
      res = validate(*args, **kwargs)
    except Exception:
      raise ValidateException()

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

class SomeModel(SyncableMixin, models.Model):
  pass

您总是在超级调用中引用当前类。

1
super(SyncableMixin, self).save(*args, **kwargs)

这对于混合子类和普通子类都是正确的。

(同样,不要捕获基本异常,尤其是不要只捕获引发另一个异常的内容——这完全没有意义。)