我有一个模型BankAccount
。 BankAccount
模型包含CharField
IBAN
,这是一个国际银行帐号。我在多个模板中使用{{ bank_account.IBAN }}
。它存储为没有空格的字符串,但我想更改它的模板渲染,使每4个字符后跟零。
SK121234123412341234
将呈现为SK12 1234 1234 1234 1234
我可能会创建一些TemplateTag
或TemplateFilter
,但我很好奇是否有办法在BankAccount
模型中更改它。例如,创建我自己的IBANField
(覆盖CharField
),这样我就不必IBAN
或tags
围绕filters
变量。
class BankAccount(models.Model):
IBAN = models.CharField(max_length=40, ... )
...
此处未找到渲染方法:https://docs.djangoproject.com/en/1.11/howto/custom-model-fields/
答案 0 :(得分:4)
您可以创建自定义字段,但最简单的方法就是编写一个以正确格式显示值的方法。类似的东西:
class BankAccount(models.Model):
..
def display_iban(self):
return ''.join(l + ' ' if (i+1) % 4 == 0 else l for i, l in enumerate(self.IBAN))
现在您可以在模板中执行{{ bank_account.display_iban }}
。