我在理解这一点并想出一种方法来引用模型字段的关键字self
内部时遇到了问题:default
这是我所拥有的:
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))
所以我试图在类定义中访问 self ,这似乎行不通,因为 python 不知道 self 在哪里,因为它还不是一个对象。
我尝试了不同的方法,例如:
special_code = models.CharField(max_length=30, default='%s-%s' % (number, bank.number))
但在这种情况下,它无法识别bank.number
,因为 bank 它只是一个带有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)