我有一个名为Fattura的模型,我想将字段“printable”的默认值设置为包含字段“numero”的值的字符串。
但我有错误,link_fattura参数较少,但如果我添加default = link_fattura(self)我有一个错误,因为没有定义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 :(得分: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)
答案 1 :(得分:0)
抱歉,我读错了你的问题,没有javascript就不可能,因为你的模型还没有在那个阶段保存过。
您可以通过执行以下操作来预测网址:
def link_facttura(self):
if not self.id:
return some_url/fattura/%d/ % Fattura.objects.latest().id+1
return u""
但它很丑,一旦你开始删除记录就可能导致错误