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

时间:2012-10-03 09:04:54

标签: python django model override

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

1 个答案:

答案 0 :(得分:7)

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

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

对于mixins和普通的子类化都是如此。

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