django-tinymce HTMLField, покрывающий описание поля модели в admin/add

Проблема

Имя поля модели не отображается на странице добавления администратора Django при использовании django-tinymce tinymce_models.HTMLField(). Поле Name: есть на картинке, а поле Description нет. Как я могу отобразить текст Description поверх редактора TinyMCE?

введите здесь описание изображения

Модель

class Project(models.Model):
    name = models.CharField(max_length=255)
    slug = models.SlugField(unique=True, max_length=255)
    description = tinymce_models.HTMLField()
    started = models.DateField(blank=True)

Версии

  • Джанго 1.10.4
  • django-tinymce 2.4.0
  • Миниатюрный MCE 4.5.2

Куча кода

https://codepen.io/anon/pen/xgqRqM

HTML напрямую из инструментов разработчика Chrome на странице администратора Django для добавления этой модели. CSS — это и Django, и Tiny MCE. JS взят из темы Tiny MCE. Кажется, он не отображается правильно на Codepen, поэтому я не уверен, насколько он будет полезен...

Дайте мне знать, если есть дополнительная уточняющая информация, которую я могу предоставить.

Больше изображений

Я знаю, что текст Description: находится в HTML: введите здесь описание изображения

Этот парень скрывает это? введите здесь описание изображения


person Avantol13    schedule 20.01.2017    source источник
comment
Это действительно подробная, лол, хорошая работа.   -  person Bobby    schedule 20.01.2017


Ответы (1)


Да, знакомая проблема. Вам нужно переместить левое поле виджета TinyMCE 4 вправо. В моем пакете django-tinymce4-lite я использую следующий динамический CSS для установки виджета должность:

/* Fixes TinyMCE 4 widget position in Django admin */
.form-row .mce-tinymce {
  margin-left: {{ margin_left }}px;
}
.form-row .mce-fullscreen {
  margin-left: 0;
}

Это представление, которое генерирует CSS:

def css(request):
    """
    Custom CSS for TinyMCE 4 widget

    By default it fixes widget's position in Django Admin

    :param request: Django http request
    :type request: django.http.request.HttpRequest
    :return: Django http response with CSS file for TinyMCE 4
    :rtype: django.http.HttpResponse
    """
    if 'grappelli' in settings.INSTALLED_APPS:
        margin_left = 0
    elif VERSION[0] == 1 and VERSION[1] <= 8:
        margin_left = 106  # For old style admin
    else:
        margin_left = 170  # For Django >= 1.9 style admin
    return render(request, 'tinymce/tinymce4.css', {'margin_left': margin_left}, content_type='text/css')

Но если вы не поддерживаете несколько версий Django, статического CSS с необходимым значением поля будет достаточно.

person Roman Miroshnychenko    schedule 10.03.2017
comment
В итоге я использовал django-tinymce4-lite, и он отлично работал без мне нужно изменить любой CSS! Большое спасибо! - person Avantol13; 14.03.2017