【问题标题】:Django Model: How to use mixin class to override django model for function likes saveDjango 模型:如何使用 mixin 类来覆盖 django 模型的函数,例如保存
【发布时间】:2012-09-24 04:25:14
【问题描述】:

我想在每个模型保存之前验证值。所以,我必须重写保存功能。 代码几乎是一样的,我想把它写在一个mixin类中。但失败了 我不知道怎么写super func。

我的英语很差,很抱歉。

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

【问题讨论】:

    标签: python django model overriding


    【解决方案1】:

    你总是在 super 调用中引用 current 类。

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

    这适用于 mixin 以及普通的子类化。

    (另外,不要捕获基本异常,尤其是不要捕获只是引发另一个异常的东西 - 这根本没有意义。)

    【讨论】:

      猜你喜欢
      • 2018-10-07
      • 1970-01-01
      • 2012-11-06
      • 2010-10-31
      • 2021-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-07
      相关资源
      最近更新 更多