Python 更改Django中特定CharField的呈现方式
我有一个型号Python 更改Django中特定CharField的呈现方式,python,django,python-2.7,django-models,Python,Django,Python 2.7,Django Models,我有一个型号银行账户BankAccount模型包含CharFieldIBAN,这是一个国际银行帐号。我在多个模板中使用{{bank\u account.IBAN}。它存储为一个不带空格的字符串,但我想更改它的模板呈现方式,使每4个字符后跟零 sk12123412341234将被呈现为SK12 1234 1234 1234 1234 我可能会创建一些TemplateTag或TemplateFilter,但我很好奇是否有办法在BankAccount模型中更改它。例如,创建我自己的IBANField(
银行账户
BankAccount
模型包含CharField
IBAN
,这是一个国际银行帐号。我在多个模板中使用{{bank\u account.IBAN}
。它存储为一个不带空格的字符串,但我想更改它的模板呈现方式,使每4个字符后跟零
sk12123412341234将被呈现为SK12 1234 1234 1234 1234
我可能会创建一些TemplateTag
或TemplateFilter
,但我很好奇是否有办法在BankAccount
模型中更改它。例如,创建我自己的IBANField
(覆盖CharField
),这样我就不必通过标记或过滤器来包围IBAN
变量
class BankAccount(models.Model):
IBAN = models.CharField(max_length=40, ... )
...
在这里找不到渲染方法:您可以创建一个自定义字段,但最简单的方法就是编写一个以正确格式显示值的方法。比如:
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\u account.display\u iban}}
。渲染是什么意思?你是说储蓄之后?在实时中呈现的东西?我是指{{IBAN}}}var在HTML中的样子。谢谢,这是个好主意,但是,自定义字段中的哪个方法负责值在HTML中的样子?如果这是离题的,很抱歉,但是,在这种情况下,您如何决定使用方法和属性?@souldeux模板会自动调用方法,所以这里没有区别。@MilanoSlesarik它实际上不是这样工作的。模板只显示给定的值;要自定义字段的表示形式,您必须更改从数据库加载字段的方式,可能是通过@DanielRoseman,我知道,我认为有某种render_field函数或类似的函数。谢谢,我会用你的方法。