Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Django admin - неэкранированный html в textarea для TextField [RSS Feed]

#1 Янв. 15, 2012 10:18:20

st01en
От:
Зарегистрирован: 2010-09-14
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Django admin - неэкранированный html в textarea для TextField

Здравствуйте,

у меня в моделе есть поле 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.



Офлайн

#2 Янв. 15, 2012 17:38:52

magnet85
От:
Зарегистрирован: 2009-04-13
Сообщения: 91
Репутация: +  2  -
Профиль   Отправить e-mail  

Django admin - неэкранированный html в textarea для TextField

В модели

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



Отредактировано (Янв. 16, 2012 05:20:47)

Офлайн

#3 Янв. 15, 2012 22:29:42

st01en
От:
Зарегистрирован: 2010-09-14
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Django admin - неэкранированный html в textarea для TextField

не работает. И что-то я не пойму, как оно предположительно должно работать?

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 текст должен быть точно такой как в базе, без всякого экранирования.


Надеюсь понятно, чего мне нужно :)



Офлайн

#4 Янв. 16, 2012 05:27:02

magnet85
От:
Зарегистрирован: 2009-04-13
Сообщения: 91
Репутация: +  2  -
Профиль   Отправить e-mail  

Django admin - неэкранированный html в textarea для TextField

Сохраняйте в базе без своего метода save, в базе всё будет храниться как есть и в админке будет выводиться как вам нужно.



Офлайн

#5 Янв. 16, 2012 10:42:42

st01en
От:
Зарегистрирован: 2010-09-14
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Django admin - неэкранированный html в textarea для TextField

st01en
Так вот, как бы сделать так, что б в django admin при редактировании записи, в textarea для этого поля html не экранировался, а то получается дважды экранируется, а с каждым сейвом все хуже и хуже становиться

хотелось бы именно в админе отключить экранирование для этого поля, т.к. база используется не только в django app.



Офлайн

  • Начало
  • » Django
  • » Django admin - неэкранированный html в textarea для TextField[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version