问题
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