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

泪湿孤枕 提交于 2019-12-13 12:09:10

问题


I want to validate value before every model save. So, I must override the save function. The code is nearly just the same on, and I want to write it in a mixin class. But failed for I don't know how to write super func.

I'm poor of of English, so sorry.

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:


You always refer to the current class in a super call.

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

This is true for mixins as well as normal subclassing.

(Also, don't catch a base Exception, and especially don't catch things only to raise another Exception - that makes no sense at all.)



来源:https://stackoverflow.com/questions/12705158/django-model-how-to-use-mixin-class-to-override-django-model-for-function-likes

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!