Управление размером с виджетами TextArea в django admin

Мне удалось переопределить внешний вид виджета TextArea в интерфейсе администратора django двумя разными способами:

используя formfield_overrides

в admin.py :

 class RulesAdmin(admin.ModelAdmin): formfield_overrides = { models.TextField: {'widget': Textarea( attrs={'rows': 1, 'cols': 40})}, } ... admin.site.register(Rules, RulesAdmin) 

Этот путь немного перебор, так как он изменит весь TextField для этой модели.

с пользовательской формой:

в forms.py :

 from django.forms import ModelForm, Textarea from TimePortal.models import Rules class RulesModelForm(ModelForm): class Meta: model = Rules widgets = { 'parameters': Textarea(attrs={'cols': 30, 'rows': 1}), } 

в admin.py

 from AppName.forms import RulesModelForm class RulesAdmin(admin.ModelAdmin): form = RulesModelForm 

Оба решения TextArea размер TextArea . Однако в обоих решениях фактический размер текстовой области составляет более 1 строки (фактически 2 строки). Вот как выглядит визуализированный HTML:

  <div class="form-row field-parameters"> <div> <label for="id_parameters" class="required">Parameters:</label> <textarea id="id_parameters" rows="1" cols="30" name="parameters">{}</textarea> <p class="help">Enter a valid Python Dictionary</p> </div> </div> 

И здесь есть сценарий:

форма

Согласно W3C referecnce для текстовой области :

Размер текстовой области также может быть задан с помощью свойств высоты и ширины CSS.

Итак, мои вопросы:

  • Собственная тема django css отвечает за «странное» поведение этого виджета?
  • Могут ли некоторые предложить способ решить эту проблему?

One Solution collect form web for “Управление размером с виджетами TextArea в django admin”

Это проблема, зависящая от браузера.

Согласно потоку Высота textarea не соответствует строкам в Firefox :

Firefox всегда добавляет дополнительную строку после текстового поля. Если вы хотите, чтобы он имел постоянную высоту, используйте CSS …

Вы можете установить атрибут стиля в textarea:

 from django.db import models from django.forms import Textarea class RulesAdmin(admin.ModelAdmin): formfield_overrides = { models.TextField: {'widget': Textarea( attrs={'rows': 1, 'cols': 40, 'style': 'height: 1em;'})}, } 

Работает для меня – проверено на Firefox v. 23 и Chrome против 29.

Надеюсь, это поможет.

  • Включение фильтров администратора Django на полях «многие-ко-многим»
  • Отключить кнопку «Назад» браузера после выхода из системы?
  • наличие отдельной базы данных для django-admin в django
  • Таблица «MyDjango.django_admin_log» не существует
  • Запустить django-admin startproject, если папка проекта уже существует
  • Как проверить (в шаблоне), принадлежит ли пользователь группе
  • Задержка браузера с изменением содержимого страницы в django admin (кеширование, python / django)
  • Как написать пользовательские команды django manage.py в нескольких приложениях
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.