Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更改Django中特定CharField的呈现方式_Python_Django_Python 2.7_Django Models - Fatal编程技术网

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函数或类似的函数。谢谢,我会用你的方法。