2013-05-25 61 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() 

我希望这有助于。