【问题标题】:What method/property in a django field is called from the template?从模板调用 django 字段中的什么方法/属性?
【发布时间】:2011-01-06 03:02:50
【问题描述】:

我想继承 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)

谢谢, 皮特

【问题讨论】:

    标签: django django-models django-templates


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我错过了这个:

      __metaclass__ = models.SubfieldBase
      

      好吧,我在我的子类中错过了这个,但我发现了一个内置的模板标签可以做到这一点{{ textfield|linebreaksbr }},doh!

      【讨论】:

        猜你喜欢
        • 2021-03-20
        • 1970-01-01
        • 2016-01-27
        • 2012-06-05
        • 1970-01-01
        • 2022-07-17
        • 2014-06-10
        • 2012-08-10
        • 2020-01-05
        相关资源
        最近更新 更多