2012-08-24 52 views
0

我有一個名爲Fattura的模型,我想將字段「printable」的默認值設置爲包含字段「numero」的值的字符串。django將模型字段的默認值設置爲自身屬性

但我有錯誤,link_fattura有較少的參數,但如果我添加默認= link_fattura(self)我有一個錯誤,因爲自我沒有定義。

我該如何解決這個問題?

class Fattura(models.Model): 
     def link_fattura(self, *args, **kwargs): 
       return u"http://127.0.0.1:8000/fatture/%s/" % (self.numero) 
     data = models.DateField() 
     numero = models.CharField("Numero", max_length=3) 
     fatturaProForma = models.ForeignKey(FatturaProForma) 
     printable = models.CharField("Fattura stampabile", max_length=200, default=link_fattura) 
     def __unicode__(self): 
       return u"%s %s" % (self.data, self.numero) 
     class Meta: 
       verbose_name_plural = "Fatture" 
       ordering = ['data'] 

回答

0

對不起,我讀了你的問題錯了,這是不可能的,因爲你的模型尚未保存在那個階段。

你可以通過做類似預測的網址:

def link_facttura(self): 
    if not self.id: 
     return some_url/fattura/%d/ % Fattura.objects.latest().id+1 
    return u"" 

但是,一旦你開始刪除記錄

1

使用default說法你不能做到這一點的醜陋,容易造成誤差修改。最好的選擇是覆蓋save方法:

def save(self, *args, **kwargs): 
    if not self.id and not self.printable: 
     self.printable = self.link_fattura() 
    return super(Fattura, self).save(*args, **kwargs) 
相關問題