Найти - Пользователи
Полная версия: Django admin - неэкранированный html в textarea для TextField
Начало » Django » Django admin - неэкранированный html в textarea для TextField
1
st01en
Здравствуйте,

у меня в моделе есть поле TextField, в котором могут попадаться html tags, которые не должны обрабатываться. Но html там экранируется на этапе записи в базу:
from django.db import models
from django.utils.html import escape

class MyModel(models.Model):
text = models.TextField()

def save(self, *args, **kwargs):
self.text = escape(self.text)
super(MyModel, self).save(*args, **kwargs)
Так вот, как бы сделать так, что б в django admin при редактировании записи, в textarea для этого поля html не экранировался, а то получается дважды экранируется, а с каждым сейвом все хуже и хуже становиться :)

хотелось бы именно в админе отключить экранирование для этого поля, т.к. база используется не только в django app.
magnet85
В модели
class MyModel(models.Model):
text = models.TextField()

def admin_text(self):
return self.text
admin_text.allow_tags = True

В admin.py
class MyModelAdmin(admin.ModelAdmin):
list_display = ('admin_text',)
Исправил забыл самое главное allow_tags
st01en
не работает. И что-то я не пойму, как оно предположительно должно работать?

list_display предполагает отображение в списке записей, где мне нужно выбрать что-то для редактирования.
Меня же интересует textarea на страничке редактирования. Ее содержимое должно отображаться без экранирования.

Возможно вы меня неправильно поняли?
т.е. в базе у меня такой текст
<b>Lorem</b> ipsum
Сейчас, если я хочу редактировать этот текст через django admin, он выглядит так:
<b>Lorem</b> ipsum
А это значит, что html code выглядит так:
<textarea>&amp;lt;b&amp;gt;Lorem&amp;lt;/b&amp;gt; ipsum</textarea>
мне нужно, что бы при редактировании в админе текст выглядел так:
<b>Lorem</b> ipsum
т.е. в html текст должен быть точно такой как в базе, без всякого экранирования.


Надеюсь понятно, чего мне нужно :)
magnet85
Сохраняйте в базе без своего метода save, в базе всё будет храниться как есть и в админке будет выводиться как вам нужно.
st01en
st01en
Так вот, как бы сделать так, что б в django admin при редактировании записи, в textarea для этого поля html не экранировался, а то получается дважды экранируется, а с каждым сейвом все хуже и хуже становиться

хотелось бы именно в админе отключить экранирование для этого поля, т.к. база используется не только в django app.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB