2013-05-25 176 views
1

我有一些固定的數字讓我們說它是num = 1000現在我有字段,需要object.id和num的總和。我需要在save()中像下面這樣。Django獲取保存中對象的ID()

def save(self, *args, **kwargs): 
    num = 1000 
    self.special = self.id + num 
    super(MyModel, self).save(*args, **kwargs) 

但self.id是保存後名稱和字段名爲特殊是必需的。如何獲得self.id?

回答

2

首先呢?您想要添加固定號碼的號碼是?如果是這樣,爲什麼你必須把它存儲在數據庫中呢?您可以創建你的模型的方法,它作爲一個屬性,增加的數量,當你需要它:

class ModelX(models.Model): 
    ... 
    def special(self): 
     num = 1000 
     return self.id + num 

如果你真的需要這個存儲到您也許需要做兩個數據庫訪問,因爲丹尼爾的分貝說,你得到的ID後對象存儲在數據庫中。

您可以修改save方法來這樣一句:

def save(self, *args, **kwargs): 
    num = 1000 
    self = super(MyModel, self).save(*args, **kwargs) 
    self.special = obj.id + num 
    self.save() 

注意,這可能只是在做這第一次的對象在數據庫中創建進行優化,其中self.special是根據NULL或默認值你如何宣佈你的模型。

def save(self, *args, **kwargs): 
    num = 1000 
    self = super(MyModel, self).save(*args, **kwargs) 
    # self.special is null, (creating the object in the db for the 1st time) 
    if not self.special: # or if self.special != defaultvalue (defined in MyModel) 
     self.special = obj.id + num 
     self.save() 

我希望這有助於。