Oz1*_*123 32 css python django django-admin
我设法TextArea
用两种不同的方式覆盖django管理界面中Widget 的外观:
在admin.py
:
class RulesAdmin(admin.ModelAdmin):
formfield_overrides = {
models.TextField: {'widget': Textarea(
attrs={'rows': 1,
'cols': 40})},
}
...
admin.site.register(Rules, RulesAdmin)
Run Code Online (Sandbox Code Playgroud)
这种方式有点过分,因为它会改变该模型的所有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}),
}
Run Code Online (Sandbox Code Playgroud)
在 admin.py
from AppName.forms import RulesModelForm
class RulesAdmin(admin.ModelAdmin):
form = RulesModelForm
Run Code Online (Sandbox Code Playgroud)
这两种解决方案调整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>
Run Code Online (Sandbox Code Playgroud)
这是一个screentshot:
根据W3C对文本区的引用:
textarea的大小也可以通过CSS高度和宽度属性指定.
所以,我的问题是:
ale*_*cxe 34
这是特定于浏览器的问题.
Firefox总是在文本字段后添加一行.如果你想让它有一个恒定的高度,使用CSS ...
您可以设置style
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;'})},
}
Run Code Online (Sandbox Code Playgroud)
适用于我 - 在Firefox v.23和Chrome v.29上测试过.
希望有所帮助.
归档时间: |
|
查看次数: |
22484 次 |
最近记录: |