2010-01-17 15 views
1

我想子類models.TextField,所以我可以將文本返回到取代\r\n發生的模板。但是,我不希望<br />存儲在數據庫中。調用模板時調用哪個方法來檢索字段的數據?從模板中調用django字段中的哪些方法/屬性?

我嘗試這樣做,但它似乎並沒有工作:

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

更簡單的方法是在模板中使用linebreaks過濾器。

只是爲了澄清,即使使用元類集,to_python也不是從模板中調用,而是從數據庫最初加載字段時。

1

我錯過了這一點:

__metaclass__ = models.SubfieldBase 

好吧,我失蹤了這在我的子類中,但我發現了一個內置的模板標籤,它可以做到這一點{{ textfield|linebreaksbr }},doh!

相關問題