4

我想在每个模型保存之前验证值。所以,我必须重写保存功能。代码几乎是一样的,我想把它写在一个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
4

1 回答 1

7

你总是在 super 调用中引用当前类。

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

这适用于 mixins 以及正常的子类化。

(另外,不要捕获基本异常,特别是不要捕获只是为了引发另一个异常的东西——这根本没有意义。)

于 2012-10-03T09:09:48.843 回答