2011-03-30 61 views
1

我想算模型的所有實例的清潔方法中,這樣的事情:覆蓋模型的清潔方法問題

def SampleModel(models.Model): 
    ... 

    def clean(self): 
     SampleModel.objects.all().count() 

然而,該模型還沒有定義,並對象不能訪問通過自。有沒有辦法做到這一點,而不使用原始的SQL?

+0

模型。您無法在尚未定義的類上調用實例方法。 – orokusaki 2011-03-30 19:44:31

回答

5

您可以通過使用一個模型自我訪問對象:定義

self.__class__.objects.count() 
+0

我的不好,SampleModel.objects.all()。count()實際上起作用。但是,謝謝,上面的代碼也適用。我相信它也一樣。 – gladysbixly 2011-03-30 19:08:47

+0

不客氣。當你不知道你正在處理的是什麼類型的時候,self .__ class__會很有用,就像你有一個抽象模型並且想要提供每個模型繼承的對象的計數一樣。 – Brandon 2011-03-30 19:36:05