从模板中调用django字段中的哪个方法/属性?

时间:2010-01-17 18:21:38

标签: django django-models django-templates

我想继承models.TextField,因此我可以将文本返回到模板,其中\r\n的出现被<br />替换。但是,我不希望<br />存储在数据库中。从模板调用时,调用哪个方法来检索字段的数据?

我尝试了这个,但它似乎不起作用:

class HTMLTextField(models.TextField):
    def to_python(self, value):
        value = super(HTMLTextField, self).to_python(value)
        value = value.replace('\r\n', '<br />')
        value = value.replace('\n', '<br />')
        return mark_safe(value)

谢谢, 皮特

2 个答案:

答案 0 :(得分:2)

更简单的方法是在模板中使用linebreaks过滤器。

只是为了澄清,即使使用元类集,也不会从模板调用to_python,而是在最初从数据库加载字段时。

答案 1 :(得分:1)

我错过了这个:

__metaclass__ = models.SubfieldBase

好吧,我在我的子类中遗漏了这个,但我找到了一个内置的模板标签来执行此操作{{ textfield|linebreaksbr }},doh!