Steruj wyglądem widżetu TextArea w administratorze django
Udało mi się zastąpić wygląd aTextArea
Widget w interfejsie administratora django na dwa różne sposoby:
wadmin.py
:
class RulesAdmin(admin.ModelAdmin):
formfield_overrides = {
models.TextField: {'widget': Textarea(
attrs={'rows': 1,
'cols': 40})},
}
...
admin.site.register(Rules, RulesAdmin)
Ten sposób jest trochę przesadą, ponieważ zmieni całe pole tekstowe dla tego modelu.
z niestandardowym formularzem:wforms.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}),
}
wadmin.py
from AppName.forms import RulesModelForm
class RulesAdmin(admin.ModelAdmin):
form = RulesModelForm
Oba rozwiązania zmieniają rozmiarTextArea
. Jednak w obu rozwiązaniach rzeczywisty rozmiar obszaru tekstowego jest większy niż 1 wiersz (a właściwie 2 wiersze). Oto jak wygląda renderowany 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>
A oto screentshot:
WedługOdniesienie W3C dla obszaru tekstowego:
Rozmiar obszaru tekstowego może być również określony przez właściwości wysokości i szerokości CSS.
Moje pytania to:
Czy własny motyw css django jest odpowiedzialny za „dziwne” zachowanie tego widgetu?Czy niektórzy mogą zaproponować sposób rozwiązania tego problemu?