2011-06-13 28 views
1

我正在嘗試創建一個應用程序,用戶因登錄嘗試失敗次數過多而無法登錄。在Django中,如何重寫對象的delete()函數?

爲此,如果在5分鐘內有5次登錄失敗,則會創建一個鎖定對象,並停用用戶(is_active = False)。

但是,當此Lockout對象被刪除時,用戶應立即再次激活(is_active = True)。

爲此,我必須重寫Lockout模型的delete()函數,以便在刪除時激活用戶。此代碼,我認爲下面的文檔,不起作用:

def delete(self): 
     self.user.is_active = True 
     self.user.save() 
     super(Lockout, self).delete() 

我想知道這是否是正確的方法來做到這一點?

非常感謝。

回答

3

這是正確的做法。您遇到的問題是您嘗試通過QuerySet刪除,其中未調用模型方法。您需要登錄.filter(),然後遍歷每個模型調用.delete()

但它可能更容易create a new auth backend檢查鎖定,而不是通過這些雜技。

+0

謝謝!這就說得通了;通過管理界面刪除不會調用models.py中的自定義delete()函數。 – dangerChihuahua007 2011-06-13 20:58:01

相關問題