更改Django中特定CharField的渲染

时间:2017-11-01 16:34:38

标签: python django python-2.7 django-models

我有一个模型BankAccountBankAccount模型包含CharField IBAN,这是一个国际银行帐号。我在多个模板中使用{{ bank_account.IBAN }}。它存储为没有空格的字符串,但我想更改它的模板渲染,使每4个字符后跟零。

SK121234123412341234将呈现为SK12 1234 1234 1234 1234

我可能会创建一些TemplateTagTemplateFilter,但我很好奇是否有办法在BankAccount模型中更改它。例如,创建我自己的IBANField(覆盖CharField),这样我就不必IBANtags围绕filters变量。

class BankAccount(models.Model):
    IBAN = models.CharField(max_length=40, ... )
    ...

此处未找到渲染方法:https://docs.djangoproject.com/en/1.11/howto/custom-model-fields/

1 个答案:

答案 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 }}