2012-10-03 37 views
4

我想在每次保存模型之前验证值。所以,我必须重写保存功能。 代码几乎和上面的代码相同,我想在mixin类中编写代码。但失败的 我不知道如何写超级func。Django模型:如何使用mixin类来覆盖django模型的功能喜欢保存

我很穷的英语,所以很抱歉。

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 

回答

7

你总是指当前类超级调用。

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

对于mixin以及普通子类,这是正确的。

(另外,不要捕捉一个基本异常,特别是不要捕捉事物只是为了引发另一个异常 - 这完全没有意义。)