2012-10-03 48 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以及普通子類,這是正確的。

(另外,不要捕捉一個基本異常,特別是不要捕捉事物只是爲了引發另一個異常 - 這完全沒有意義。)