我一直有问题,明白这一点,并拿出做一个参考self
的default
关键字示范田内的一种方式:的Django模型字段:参考自上默认的关键字
这里我有什么:
class Bank(models.Model):
number = models.CharField(max_length=10)
class Account(models.Model):
bank = models.ForeignKey(Bank, related_name="accounts")
number = models.CharField(max_length=20)
created = models.DateTimeField(auto_now_add=True)
creator = models.ForeignKey(User)
# This is the guy
special_code = models.CharField(max_length=30, default='%s-%s' % (self.number, self.bank.number))
所以我试图访问类的定义,这似乎不工作了,因为蟒蛇不知道里面自哪里自我是因为它不是一个对象呢。
我已经尝试不同的东西,如:
special_code = models.CharField(max_length=30, default='%s-%s' % (number, bank.number))
但在这种情况下,它不承认bank.number
因为银行它的唯一属性与models.ForeignKey
。
我也试过用Account
类中的方法:
def bank_number(self):
return self.bank.number
然后:
special_code = models.CharField(max_length=30, default='%s-%s' % (number, bank_number()))
这是有点愚蠢,因为它仍然需要自我。 有没有办法可以做到这一点?
我需要它的数量存储在数据库中,所以采用的方法是这样不会帮助:
def special_number(self):
return '%s-%s' % (self.number, self.bank.number)
如果给number和bank.number的默认值会发生什么?如果为空,则尝试在模型类的save()方法中设置special_code。 – PepperoniPizza
感谢您的想法。我要post_save检查special_code为空,然后只填充一次我想要的数据。 –