我想继承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)
谢谢, 皮特
答案 0 :(得分:2)
更简单的方法是在模板中使用linebreaks
过滤器。
只是为了澄清,即使使用元类集,也不会从模板调用to_python
,而是在最初从数据库加载字段时。
答案 1 :(得分:1)
我错过了这个:
__metaclass__ = models.SubfieldBase
好吧,我在我的子类中遗漏了这个,但我找到了一个内置的模板标签来执行此操作{{ textfield|linebreaksbr }}
,doh!