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

che*_*uan 4 python django overriding model

我希望在每个模型保存之前验证值.所以,我必须覆盖保存功能.代码几乎是一样的,我想在mixin类中编写它.但是因为我不知道怎么写超级功能而失败了.

我的英语很差,很抱歉.

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
Run Code Online (Sandbox Code Playgroud)

Dan*_*man 7

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

super(SyncableMixin, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

这对于mixins以及普通的子类化都是如此.

(另外,不要捕获基本异常,特别是不要抓住东西只是为了引发另一个异常 - 这完全没有意义.)