Gui*_*sta 4 python django django-models
我一直在理解这一点并想出一种方法来对模型字段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))
Run Code Online (Sandbox Code Playgroud)
所以我试图在类定义中访问 self ,这似乎不起作用,因为 python 不知道 self 在哪里,因为它还不是一个对象。
我尝试过不同的事情,例如:
special_code = models.CharField(max_length=30, default='%s-%s' % (number, bank.number))
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,它无法识别,bank.number因为银行只有一个带有models.ForeignKey.
我也试过在Account类中使用一种方法:
def bank_number(self):
return self.bank.number
Run Code Online (Sandbox Code Playgroud)
进而:
special_code = models.CharField(max_length=30, default='%s-%s' % (number, bank_number()))
Run Code Online (Sandbox Code Playgroud)
这有点愚蠢,因为它仍然需要自我。有没有办法做到这一点?
我需要它来存储数据库中的数字,所以使用这样的方法不会有帮助:
def special_number(self):
return '%s-%s' % (self.number, self.bank.number)
Run Code Online (Sandbox Code Playgroud)
我认为没有任何方法可以在默认的可调用对象中访问 self 。还有其他几种方法可以设置字段的值:
如果您不希望用户能够更改该值,请覆盖模型的保存方法并将其设置在那里。
如果默认值只是一个建议,并且您确实希望允许用户更改它,则覆盖模型表单的__init__方法,然后您可以访问 self.instance 并更改设置字段的初始值。
| 归档时间: |
|
| 查看次数: |
2646 次 |
| 最近记录: |