Какой метод / свойство в поле django вызывается из шаблона? - PullRequest
1 голос
/ 17 января 2010

Я хочу создать подкласс моделей. 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 ]

2 голосов
/ 17 января 2010

Более простой способ сделать это - использовать фильтр linebreaks в шаблоне.

И просто для пояснения, даже с установленным метаклассом, to_python вызывается не из шаблона, а когда поле изначально загружается из базы данных.

1 голос
/ 17 января 2010

Мне не хватало этого:

__metaclass__ = models.SubfieldBase

Ну, мне не хватало этого в моем подклассе, но я нашел встроенный тег шаблона, который делает это {{ textfield|linebreaksbr }}, дох!

...