2012-02-15 20 views
3

我正在開發一個Django項目,管理員可以使用TinyMCE設置某些內容的樣式。一切工作正常,除了惱人的細節。Django中的富文本編輯器admin - 將HTML標籤隱藏在更改列表中

對於某些模型,需要在更改列表中顯示以富文本模式編輯的字段。會發生什麼情況是該字段隨後會顯示其HTML標籤。我想要做的是在變更列表中有相當於

{{ field|striptags }} 

不幸的是,事情並不像重寫管理模板那麼簡單,因爲內容已經到達用admin HTML包裝的模板(<td>)。所以,如果我只是用

<tr class="{% cycle 'row1' 'row2' %}">{% for item in result %}{{ item|striptags }}{% endfor %}</tr> 

內 '管理/模板/ change_list_results.html' 表出現無樣式的結果替換

<tr class="{% cycle 'row1' 'row2' %}">{% for item in result %}{{ item }}{% endfor %}</tr> 

如何在更改列表中對這些字段進行體面的預覽?

回答

5

您可以在您的模型上創建一個額外的屬性,返回剝離的字段並在list_display中使用此屬性。

class YourClass(models.Model): 
    .... 

    @property 
    def html_stripped(self): 
     from django.utils.html import strip_tags 
     return strip_tags(self.html_field) 

,並在您ModelAdmin

list_display = ['html_stripped', ...] 

list_display的文檔提到其他幾個選項,給你關於這個主題的更多細節。

2

如果問題是,你不希望看到的標籤,但希望他們渲染,你可能想試試這個:

class SomeModel(models.Model): 
    some_field = models.CharField(max_length=50) 
    def some_field_html(self) : 
     return self.some_field 
    some_field_html.allow_tags = True 

,然後在模型管理

list_display = ('some_field_html') 

「關於list_display的幾個特例: ... 如果給出的字符串是模型的方法,ModelAdmin或可調用對象,該方法的輸出,給出了該方法allow_tags屬性的值爲True。「 - https://docs.djangoproject.com/en/1.3/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display