Мне удалось переопределить внешний вид виджета 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}),
}
in admin.py
from AppName.forms import RulesModelForm
class RulesAdmin(admin.ModelAdmin):
form = RulesModelForm
Оба решения изменяют размер 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 ответственной здесь за "нечетные" поведение этого виджета?
- Может ли кто-нибудь предложить способ решить эту проблему?